12#if !defined(PAPI_SDE_LIB_H)
20#define PAPI_SDE_VERSION_NUMBER(_maj,_min) ( ((_maj)<<16) | (_min) )
21#define PAPI_SDE_VERSION PAPI_SDE_VERSION_NUMBER(1,0)
23#define PAPI_SDE_RO 0x00
24#define PAPI_SDE_RW 0x01
25#define PAPI_SDE_DELTA 0x00
26#define PAPI_SDE_INSTANT 0x10
28#define PAPI_SDE_long_long 0x0
29#define PAPI_SDE_int 0x1
30#define PAPI_SDE_double 0x2
31#define PAPI_SDE_float 0x3
33#define PAPI_SDE_SUM 0x0
34#define PAPI_SDE_MAX 0x1
35#define PAPI_SDE_MIN 0x2
46#define register_fp_counter register_counter_cb
47#define papi_sde_register_fp_counter papi_sde_register_counter_cb
49#define destroy_counter unregister_counter
50#define destroy_counting_set unregister_counter
51#define papi_sde_destroy_counter papi_sde_unregister_counter
52#define papi_sde_destroy_counting_set papi_sde_unregister_counter
54#pragma GCC visibility push(default)
58#define SDEDBG(format, args...) { if(_sde_debug){fprintf(stderr,format, ## args);} }
60static inline void SDE_ERROR(
const char *format, ... ){
64 fprintf(
stderr,
"PAPI SDE Error: " );
65 vfprintf(
stderr, format, args );
75#define GET_FLOAT_SDE(x) *((float *)&x)
76#define GET_DOUBLE_SDE(x) *((double *)&x)
84#define GET_SDE_RECORDER_ADDRESS(x,rcrd_type) ((rcrd_type *)x)
102typedef struct papi_sde_fptr_struct_s {
114 int (*counting_set_insert)(
void *cset_handle,
size_t element_size,
size_t hashable_size,
const void *element, uint32_t type_id );
115 int (*counting_set_remove)(
void *cset_handle,
size_t hashable_size,
const void *element, uint32_t type_id );
116 int (*record)(
void *record_handle,
size_t typesize,
const void *value );
117 int (*reset_recorder)(
void *record_handle );
136int papi_sde_record(
void *record_handle,
size_t typesize,
const void *value );
148#define POPULATE_SDE_FPTR_STRUCT( _A_ ) do{\
149 _A_.init = papi_sde_init;\
150 _A_.shutdown = papi_sde_shutdown;\
151 _A_.register_counter = papi_sde_register_counter;\
152 _A_.register_counter_cb = papi_sde_register_counter_cb;\
153 _A_.unregister_counter = papi_sde_unregister_counter;\
154 _A_.describe_counter = papi_sde_describe_counter;\
155 _A_.add_counter_to_group = papi_sde_add_counter_to_group;\
156 _A_.create_counter = papi_sde_create_counter;\
157 _A_.inc_counter = papi_sde_inc_counter;\
158 _A_.create_recorder = papi_sde_create_recorder;\
159 _A_.create_counting_set = papi_sde_create_counting_set;\
160 _A_.record = papi_sde_record;\
161 _A_.reset_recorder = papi_sde_reset_recorder;\
162 _A_.reset_counter = papi_sde_reset_counter;\
163 _A_.get_counter_handle = papi_sde_get_counter_handle;\
170#pragma GCC visibility pop
static void * cntr_handle
static papi_handle_t handle
char event_name[2][PAPI_MAX_STR_LEN]
int papi_sde_compare_int(const void *p1, const void *p2)
papi_handle_t papi_sde_init(const char *name_of_library)
int papi_sde_reset_recorder(void *record_handle)
papi_handle_t papi_sde_hook_list_events(papi_sde_fptr_struct_t *fptr_struct)
int papi_sde_describe_counter(papi_handle_t handle, const char *event_name, const char *event_description)
int papi_sde_inc_counter(void *cntr_handle, long long int increment)
int papi_sde_counting_set_remove(void *cset_handle, size_t hashable_size, const void *element, uint32_t type_id)
int papi_sde_counting_set_insert(void *cset_handle, size_t element_size, size_t hashable_size, const void *element, uint32_t type_id)
int papi_sde_compare_long_long(const void *p1, const void *p2)
int papi_sde_create_recorder(papi_handle_t handle, const char *event_name, size_t typesize, int(*cmpr_func_ptr)(const void *p1, const void *p2), void **record_handle)
void * papi_sde_get_counter_handle(papi_handle_t handle, const char *event_name)
int(* papi_sde_cmpr_fptr_t)(void *)
int papi_sde_register_counter(papi_handle_t handle, const char *event_name, int cntr_mode, int cntr_type, void *counter)
int papi_sde_compare_float(const void *p1, const void *p2)
static void SDE_ERROR(const char *format,...)
int papi_sde_unregister_counter(void *handle, const char *event_name)
int papi_sde_reset_counter(void *cntr_handle)
int papi_sde_shutdown(papi_handle_t handle)
int papi_sde_compare_double(const void *p1, const void *p2)
int papi_sde_add_counter_to_group(papi_handle_t handle, const char *event_name, const char *group_name, uint32_t group_flags)
int papi_sde_record(void *record_handle, size_t typesize, const void *value)
int papi_sde_create_counting_set(papi_handle_t handle, const char *cset_name, void **cset_handle)
int papi_sde_register_counter_cb(papi_handle_t handle, const char *event_name, int cntr_mode, int cntr_type, papi_sde_fptr_t callback, void *param)
int papi_sde_create_counter(papi_handle_t handle, const char *event_name, int cntr_mode, void **cntr_handle)
long long int(* papi_sde_fptr_t)(void *)
cset_list_object_t * next