PAPI 7.1.0.0
Loading...
Searching...
No Matches
sde_internal.h
Go to the documentation of this file.
1#ifndef SDE_H
2#define SDE_H
3
4#ifndef SDE_MAX_SIMULTANEOUS_COUNTERS
5#define SDE_MAX_SIMULTANEOUS_COUNTERS 40
6#endif
7
8#include <inttypes.h>
9#include <dlfcn.h>
10#include <assert.h>
11#include <time.h>
12#include <ucontext.h>
13#include "papi.h"
14#include "papi_internal.h"
15#include "papi_vector.h"
16#include "papi_memory.h"
17#include "extras.h"
18
19#define REGISTERED_EVENT_MASK 0x2;
20
21/* We do not use this structure, but the framework needs its size */
22typedef struct sde_register
23{
24 int junk;
26
27/* We do not use this structure, but the framework needs its size */
28typedef struct sde_reg_alloc
29{
32
37typedef struct sde_control_state
38{
40 uint32_t which_counter[SDE_MAX_SIMULTANEOUS_COUNTERS];
42 long long previous_value[SDE_MAX_SIMULTANEOUS_COUNTERS];
43 timer_t timerid;
46
47typedef struct sde_context {
48 long long junk;
50
51
52// Function prototypes
53
55static int _sde_write( hwd_context_t *ctx, hwd_control_state_t *ctl, long long *events );
56static int _sde_read( hwd_context_t *ctx, hwd_control_state_t *ctl, long long **events, int flags );
62static int _sde_init_component( int cidx );
63static int _sde_shutdown_component(void);
65static int _sde_ctl( hwd_context_t *ctx, int code, _papi_int_option_t *option );
66static int _sde_set_domain( hwd_control_state_t * cntrl, int domain );
67static int _sde_ntv_enum_events( unsigned int *EventCode, int modifier );
68static int _sde_ntv_code_to_name( unsigned int EventCode, char *name, int len );
69static int _sde_ntv_code_to_descr( unsigned int EventCode, char *descr, int len );
70static int _sde_ntv_name_to_code(const char *name, unsigned int *event_code );
71static void _sde_dispatch_timer( int n, hwd_siginfo_t *info, void *uc);
72
73static void invoke_user_handler( unsigned int cntr_uniq_id );
75static inline int sde_arm_timer(sde_control_state_t *sde_ctl);
76
77int papi_sde_lock(void);
79void papi_sde_check_overflow_status(unsigned int cntr_uniq_id, long long int latest);
81
82// Function pointers that will be initialized by the linker if libpapi and libsde are static (.a)
83__attribute__((__common__)) int (*sde_ti_reset_counter_ptr)( uint32_t );
84__attribute__((__common__)) int (*sde_ti_read_counter_ptr)( uint32_t, long long int * );
85__attribute__((__common__)) int (*sde_ti_write_counter_ptr)( uint32_t, long long );
86__attribute__((__common__)) int (*sde_ti_name_to_code_ptr)( const char *, uint32_t * );
87__attribute__((__common__)) int (*sde_ti_is_simple_counter_ptr)( uint32_t );
88__attribute__((__common__)) int (*sde_ti_is_counter_set_to_overflow_ptr)( uint32_t );
89__attribute__((__common__)) int (*sde_ti_set_counter_overflow_ptr)( uint32_t, int );
90__attribute__((__common__)) char * (*sde_ti_get_event_name_ptr)( int );
91__attribute__((__common__)) char * (*sde_ti_get_event_description_ptr)( int );
92__attribute__((__common__)) int (*sde_ti_get_num_reg_events_ptr)( void );
93__attribute__((__common__)) int (*sde_ti_shutdown_ptr)( void );
94
95#endif
static long count
char events[MAX_EVENTS][BUFSIZ]
unsigned long AO_t __attribute__((__aligned__(4)))
Definition: m68k.h:21
Return codes and api definitions.
static int native
static int cidx
const char * name
Definition: rocs.c:225
static int sde_arm_timer(sde_control_state_t *sde_ctl)
static int do_set_timer_for_overflow(sde_control_state_t *sde_ctl)
static int _sde_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
static int _sde_init_control_state(hwd_control_state_t *ctl)
#define SDE_MAX_SIMULTANEOUS_COUNTERS
Definition: sde_internal.h:5
static int _sde_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _sde_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
static void _sde_dispatch_timer(int n, hwd_siginfo_t *info, void *uc)
Definition: sde.c:721
static int _sde_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
int
Definition: sde_internal.h:89
static int _sde_shutdown_component(void)
static int _sde_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
static int _sde_ntv_code_to_descr(unsigned int EventCode, char *descr, int len)
static int _sde_ntv_name_to_code(const char *name, unsigned int *event_code)
static void invoke_user_handler(unsigned int cntr_uniq_id)
static int _sde_init_component(int cidx)
void papi_sde_check_overflow_status(unsigned int cntr_uniq_id, long long int latest)
int papi_sde_lock(void)
static int _sde_ntv_code_to_name(unsigned int EventCode, char *name, int len)
static int _sde_init_thread(hwd_context_t *ctx)
int papi_sde_set_timer_for_overflow(void)
static int _sde_set_domain(hwd_control_state_t *cntrl, int domain)
int papi_sde_unlock(void)
long long int long long
Definition: sde_internal.h:85
static int _sde_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long long **events, int flags)
static int _sde_write(hwd_context_t *ctx, hwd_control_state_t *ctl, long long *events)
static int _sde_shutdown_thread(hwd_context_t *ctx)
static int _sde_ntv_enum_events(unsigned int *EventCode, int modifier)
long long junk
Definition: sde_internal.h:48
sde_register_t junk
Definition: sde_internal.h:30
char * descr