/****************************/ /* THIS IS OPEN SOURCE CODE */ /****************************/ /** * @file linux-infiniband_umad.h * @author Heike Jagode (in collaboration with Michael Kluge, TU Dresden) * jagode@eecs.utk.edu * * @ingroup papi_components * * InfiniBand component * * Tested version of OFED: 1.4 * * @brief * This file has the source code for a component that enables PAPI-C to * access hardware monitoring counters for InfiniBand devices through the * OFED library. Since a new interface was introduced with OFED version 1.4 * (released Dec 2008), the current InfiniBand component does not support * OFED versions < 1.4. */ #ifndef _PAPI_INFINIBAND_H #define _PAPI_INFINIBAND_H #define __BUILD_VERSION_TAG__ 1.2 #include #include /* describes a single counter with its properties */ typedef struct counter_info_struct { int idx; char *name; char *description; char *unit; uint64_t value; struct counter_info_struct *next; } counter_info; typedef struct { int count; char **data; } string_list; /* infos collected of a single IB port */ typedef struct ib_port_struct { char *name; counter_info *send_cntr; counter_info *recv_cntr; int port_rate; int port_number; int is_initialized; uint64_t sum_send_val; uint64_t sum_recv_val; uint32_t last_send_val; uint32_t last_recv_val; struct ib_port_struct *next; } ib_port; static void init_ib_counter( ); static int read_ib_counter( ); static int init_ib_port( ib_port * portdata ); static void addIBPort( const char *ca_name, umad_port_t * port ); /************************* DEFINES SECTION ******************************* ***************************************************************************/ /* this number assumes that there will never be more events than indicated */ #define INFINIBAND_MAX_COUNTERS 100 #define INFINIBAND_MAX_COUNTER_TERMS INFINIBAND_MAX_COUNTERS typedef counter_info INFINIBAND_register_t; typedef counter_info INFINIBAND_native_event_entry_t; typedef counter_info INFINIBAND_reg_alloc_t; typedef struct INFINIBAND_control_state { long long counts[INFINIBAND_MAX_COUNTERS]; int ncounter; } INFINIBAND_control_state_t; typedef struct INFINIBAND_context { INFINIBAND_control_state_t state; } INFINIBAND_context_t; #endif /* _PAPI_INFINIBAND_H */