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