#ifndef _PAPI_SOLARIS_ULTRA_H #define _PAPI_SOLARIS_ULTRA_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "papi_defines.h" #define MAX_COUNTERS 2 #define MAX_COUNTER_TERMS MAX_COUNTERS #define PAPI_MAX_NATIVE_EVENTS 71 #define MAX_NATIVE_EVENT PAPI_MAX_NATIVE_EVENTS #define MAX_NATIVE_EVENT_USII 22 /* Defines in papi_internal.h cause compile warnings on solaris because typedefs are done here */ #undef hwd_context_t #undef hwd_control_state_t #undef hwd_reg_alloc_t #undef hwd_register_t #undef hwd_siginfo_t #undef hwd_ucontext_t typedef int hwd_reg_alloc_t; typedef struct US_register { int event[MAX_COUNTERS]; } hwd_register_t; typedef struct papi_cpc_event { /* Structure to libcpc */ cpc_event_t cmd; /* Flags to kernel */ int flags; } papi_cpc_event_t; typedef struct hwd_control_state { /* Buffer to pass to the kernel to control the counters */ papi_cpc_event_t counter_cmd; /* overflow event counter */ int overflow_num; } hwd_control_state_t; typedef int hwd_register_map_t; typedef struct _native_info { /* native name */ char name[40]; /* Buffer to pass to the kernel to control the counters */ int encoding[MAX_COUNTERS]; } native_info_t; #include "solaris-context.h" typedef int hwd_context_t; /* Assembler prototypes */ extern void cpu_sync( void ); extern unsigned long long get_tick( void ); extern caddr_t _start, _end, _etext, _edata; extern rwlock_t lock[PAPI_MAX_LOCK]; #define _papi_hwd_lock(lck) rw_wrlock(&lock[lck]); #define _papi_hwd_unlock(lck) rw_unlock(&lock[lck]); #endif