Blame src/components/net/linux-net.h

Packit 577717
/****************************/
Packit 577717
/* THIS IS OPEN SOURCE CODE */
Packit 577717
/****************************/
Packit 577717
Packit 577717
/**
Packit 577717
 * @file    linux-net.h
Packit 577717
 * CVS:     $Id$
Packit 577717
 *
Packit 577717
 * @author  Haihang You
Packit 577717
 *          you@cs.utk.edu
Packit 577717
 *
Packit 577717
 * @author  Jose Pedro Oliveira
Packit 577717
 *          jpo@di.uminho.pt
Packit 577717
 *
Packit 577717
 * @ingroup papi_components
Packit 577717
 *
Packit 577717
 * @brief net component
Packit 577717
 *  This file contains the source code for a component that enables
Packit 577717
 *  PAPI-C to access network statistics through the /proc file system.
Packit 577717
 *  This component will dynamically create a native events table for
Packit 577717
 *  all the interfaces listed in /proc/net/dev (16 entries for each
Packit 577717
 *  interface).
Packit 577717
 */
Packit 577717
Packit 577717
#ifndef _PAPI_NET_H
Packit 577717
#define _PAPI_NET_H
Packit 577717
Packit 577717
#include <unistd.h>
Packit 577717
Packit 577717
/*************************  DEFINES SECTION  ***********************************
Packit 577717
 *******************************************************************************/
Packit 577717
/* this number assumes that there will never be more events than indicated
Packit 577717
 * 20 INTERFACES * 16 COUNTERS = 320 */
Packit 577717
#define NET_MAX_COUNTERS 320
Packit 577717
Packit 577717
/** Structure that stores private information of each event */
Packit 577717
typedef struct NET_register
Packit 577717
{
Packit 577717
    /* This is used by the framework.It likes it to be !=0 to do somehting */
Packit 577717
    unsigned int selector;
Packit 577717
} NET_register_t;
Packit 577717
Packit 577717
Packit 577717
/*
Packit 577717
 * The following structures mimic the ones used by other components. It is more
Packit 577717
 * convenient to use them like that as programming with PAPI makes specific
Packit 577717
 * assumptions for them.
Packit 577717
 */
Packit 577717
Packit 577717
Packit 577717
/** This structure is used to build the table of events */
Packit 577717
typedef struct NET_native_event_entry
Packit 577717
{
Packit 577717
    NET_register_t resources;
Packit 577717
    char name[PAPI_MAX_STR_LEN];
Packit 577717
    char description[PAPI_MAX_STR_LEN];
Packit 577717
} NET_native_event_entry_t;
Packit 577717
Packit 577717
Packit 577717
typedef struct NET_reg_alloc
Packit 577717
{
Packit 577717
    NET_register_t ra_bits;
Packit 577717
} NET_reg_alloc_t;
Packit 577717
Packit 577717
Packit 577717
typedef struct NET_control_state
Packit 577717
{
Packit 577717
    long long values[NET_MAX_COUNTERS]; // used for caching
Packit 577717
    long long lastupdate;
Packit 577717
} NET_control_state_t;
Packit 577717
Packit 577717
Packit 577717
typedef struct NET_context
Packit 577717
{
Packit 577717
    NET_control_state_t state;
Packit 577717
} NET_context_t;
Packit 577717
Packit 577717
Packit 577717
/*************************  GLOBALS SECTION  ***********************************
Packit 577717
 *******************************************************************************/
Packit 577717
Packit 577717
#endif /* _PAPI_NET_H */
Packit 577717
Packit 577717
/* vim:set ts=4 sw=4 sts=4 et: */