13 #ifdef HAVE_THREAD_LOCAL_STORAGE 14 #define THREAD_LOCAL_STORAGE_KEYWORD HAVE_THREAD_LOCAL_STORAGE 16 #define THREAD_LOCAL_STORAGE_KEYWORD 19 #if defined(ANY_THREAD_GETS_SIGNAL) && !defined(_AIX) 20 #error "lookup_and_set_thread_symbols and _papi_hwi_broadcast_signal have only been tested on AIX" 23 typedef struct _ThreadInfo
25 unsigned long int tid;
42 #if defined(HAVE_THREAD_LOCAL_STORAGE) 68 THRDBG(
"Lock %d\n", lck );
71 THRDBG(
"Skipped lock %d\n", lck );
82 THRDBG(
"Unlock %d\n", lck );
85 THRDBG(
"Skipped unlock %d\n", lck );
95 unsigned long int tid;
100 #ifdef HAVE_THREAD_LOCAL_STORAGE 105 THRDBG(
"Threads not initialized, returning master thread at %p\n",
110 tid = ( *_papi_hwi_thread_id_fn ) ( );
116 THRDBG(
"Threads initialized, looking for thread %#lx\n", tid );
121 while (
tmp != NULL ) {
122 THRDBG(
"Examining thread tid %#lx at %p\n",
tmp->tid,
tmp );
123 if (
tmp->tid == tid )
134 THRDBG(
"Found thread %ld at %p\n", tid,
tmp );
136 THRDBG(
"Did not find tid %ld\n", tid );
int _papi_hwi_insert_in_thread_list(ThreadInfo_t *ptr)
struct _ThreadInfo * next
#define THRDBG(format, args...)
void _papi_hwi_shutdown_the_thread_list(void)
EventSetInfo_t * from_esi
unsigned long int(* _papi_hwi_thread_id_fn)(void)
void _papi_hwi_cleanup_thread_list(void)
int _papi_hwi_init_global_threads(void)
inline_static int _papi_hwi_lock(int lck)
inline_static int _papi_hwi_unlock(int lck)
#define _papi_hwd_unlock(lck)
unsigned long int allocator_tid
int _papi_hwi_initialize_thread(ThreadInfo_t **dest, int tid)
int _papi_hwi_broadcast_signal(unsigned int mytid)
volatile ThreadInfo_t * _papi_hwi_thread_head
EventSetInfo_t ** running_eventset
inline_static int _papi_hwi_lookup_or_create_thread(ThreadInfo_t **here, int tid)
#define THREAD_LOCAL_STORAGE_KEYWORD
inline_static ThreadInfo_t * _papi_hwi_lookup_thread(int custom_tid)
int _papi_hwi_set_thread_id_fn(unsigned long int(*id_fn)(void))
THREAD_LOCAL_STORAGE_KEYWORD ThreadInfo_t * _papi_hwi_my_thread
int _papi_hwi_shutdown_thread(ThreadInfo_t *thread, int force)
#define _papi_hwd_lock(lck)
int _papi_hwi_shutdown_global_threads(void)
int(* _papi_hwi_thread_kill_fn)(int, int)
ThreadInfo_t * _papi_hwi_lookup_in_thread_list()
int _papi_hwi_get_thr_context(void **)
int _papi_hwi_gather_all_thrspec_data(int tag, PAPI_all_thr_spec_t *where)