|
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: */
|