19#ifndef NAT_GLIBC_THREAD_DB_H
20#define NAT_GLIBC_THREAD_DB_H
28#include <sys/procfs.h>
104#define TD_THR_ANY_USER_FLAGS 0xffffffff
105#define TD_THR_LOWEST_PRIORITY -20
106#define TD_SIGNO_MASK NULL
109#define TD_EVENTSIZE 2
111#define BT_NBIPUI (1 << BT_UISHIFT)
112#define BT_UIMASK (BT_NBIPUI - 1)
121#define __td_eventmask(n) \
122 (UINT32_C (1) << (((n) - 1) & BT_UIMASK))
123#define __td_eventword(n) \
124 ((UINT32_C ((n) - 1)) >> BT_UISHIFT)
126#define td_event_emptyset(setp) \
129 for (__i = TD_EVENTSIZE; __i > 0; --__i) \
130 (setp)->event_bits[__i - 1] = 0; \
133#define td_event_fillset(setp) \
136 for (__i = TD_EVENTSIZE; __i > 0; --__i) \
137 (setp)->event_bits[__i - 1] = UINT32_C (0xffffffff); \
140#define td_event_addset(setp, n) \
141 (((setp)->event_bits[__td_eventword (n)]) |= __td_eventmask (n))
142#define td_event_delset(setp, n) \
143 (((setp)->event_bits[__td_eventword (n)]) &= ~__td_eventmask (n))
144#define td_eventismember(setp, n) \
145 (__td_eventmask (n) & ((setp)->event_bits[__td_eventword (n)]))
147# define td_eventisempty(setp) \
148 (!((setp)->event_bits[0]) && !((setp)->event_bits[1]))
150# error "td_eventisempty must be changed to match TD_EVENTSIZE"
315 struct ps_prochandle **__ph);
333 sigset_t *__ti_sigmask_p,
334 unsigned int __ti_user_flags);
382 prfpregset_t *__regset);
386 prgregset_t __gregs);
396 const prfpregset_t *__fpregs);
400 prgregset_t __gregs);
409 unsigned long int __modid,
414 psaddr_t __map_address,
size_t __offset,
415 psaddr_t *__address);
440 unsigned char __n,
const sigset_t *__ss);
444 const sigset_t *__ss);
td_err_e td_ta_clear_event(const td_thragent_t *__ta, td_thr_events_t *__event)
td_err_e td_ta_reset_stats(const td_thragent_t *__ta)
td_err_e td_thr_setprio(const td_thrhandle_t *__th, int __prio)
pthread_key_t thread_key_t
td_err_e td_ta_tsd_iter(const td_thragent_t *__ta, td_key_iter_f *__ki, void *__p)
td_err_e td_thr_getxregs(const td_thrhandle_t *__th, void *__xregs)
td_err_e td_thr_setgregs(const td_thrhandle_t *__th, prgregset_t __gregs)
td_err_e td_ta_event_addr(const td_thragent_t *__ta, td_event_e __event, td_notify_t *__ptr)
int td_key_iter_f(thread_key_t, void(*)(void *), void *)
td_err_e td_thr_event_getmsg(const td_thrhandle_t *__th, td_event_msg_t *__msg)
td_err_e td_thr_event_enable(const td_thrhandle_t *__th, int __event)
td_err_e td_thr_getfpregs(const td_thrhandle_t *__th, prfpregset_t *__regset)
td_err_e td_ta_map_id2thr(const td_thragent_t *__ta, pthread_t __pt, td_thrhandle_t *__th)
td_err_e td_ta_enable_stats(const td_thragent_t *__ta, int __enable)
td_err_e td_thr_sigsetmask(const td_thrhandle_t *__th, const sigset_t *__ss)
int td_thr_iter_f(const td_thrhandle_t *, void *)
td_err_e td_ta_set_event(const td_thragent_t *__ta, td_thr_events_t *__event)
td_err_e td_thr_setfpregs(const td_thrhandle_t *__th, const prfpregset_t *__fpregs)
td_err_e td_ta_setconcurrency(const td_thragent_t *__ta, int __level)
td_err_e td_thr_dbresume(const td_thrhandle_t *__th)
td_err_e td_ta_new(struct ps_prochandle *__ps, td_thragent_t **__ta)
td_err_e td_thr_setxregs(const td_thrhandle_t *__th, const void *__addr)
td_err_e td_thr_tsd(const td_thrhandle_t *__th, const thread_key_t __tk, void **__data)
td_err_e td_ta_get_nthreads(const td_thragent_t *__ta, int *__np)
struct td_thragent td_thragent_t
struct td_ta_stats td_ta_stats_t
td_err_e td_ta_thr_iter(const td_thragent_t *__ta, td_thr_iter_f *__callback, void *__cbdata_p, td_thr_state_e __state, int __ti_pri, sigset_t *__ti_sigmask_p, unsigned int __ti_user_flags)
td_err_e td_thr_getxregsize(const td_thrhandle_t *__th, int *__sizep)
td_err_e td_ta_event_getmsg(const td_thragent_t *__ta, td_event_msg_t *__msg)
td_err_e td_thr_dbsuspend(const td_thrhandle_t *__th)
td_err_e td_thr_set_event(const td_thrhandle_t *__th, td_thr_events_t *__event)
td_err_e td_ta_get_ph(const td_thragent_t *__ta, struct ps_prochandle **__ph)
td_err_e td_ta_map_lwp2thr(const td_thragent_t *__ta, lwpid_t __lwpid, td_thrhandle_t *__th)
td_err_e td_thr_setsigpending(const td_thrhandle_t *__th, unsigned char __n, const sigset_t *__ss)
td_err_e td_ta_get_stats(const td_thragent_t *__ta, td_ta_stats_t *__statsp)
struct td_thrhandle td_thrhandle_t
const char ** td_symbol_list(void)
td_err_e td_thr_clear_event(const td_thrhandle_t *__th, td_thr_events_t *__event)
td_err_e td_thr_validate(const td_thrhandle_t *__th)
td_err_e td_thr_tls_get_addr(const td_thrhandle_t *__th, psaddr_t __map_address, size_t __offset, psaddr_t *__address)
struct td_notify td_notify_t
struct td_thr_events td_thr_events_t
td_err_e td_thr_tlsbase(const td_thrhandle_t *__th, unsigned long int __modid, psaddr_t *__base)
td_err_e td_thr_getgregs(const td_thrhandle_t *__th, prgregset_t __gregs)
struct td_thrinfo td_thrinfo_t
td_err_e td_ta_delete(td_thragent_t *__ta)
struct td_event_msg td_event_msg_t
td_err_e td_thr_get_info(const td_thrhandle_t *__th, td_thrinfo_t *__infop)
const td_thrhandle_t * th_p
union td_event_msg::@24 msg
td_thr_events_t eventmask
uint32_t event_bits[TD_EVENTSIZE]
unsigned int ti_user_flags
unsigned char ti_preemptflag
td_thr_events_t ti_events
unsigned char ti_pirecflag
unsigned char ti_db_suspended