Banner file for linuxthread_db library.
[kopensolaris-gnu/glibc.git] / linuxthreads_db / thread_dbP.h
1 /* Private header for thread debug library.  */
2 #ifndef _THREAD_DBP_H
3 #define _THREAD_DBP_H   1
4
5 #include <string.h>
6 #include "proc_service.h"
7 #include "thread_db.h"
8 #include "../linuxthreads/internals.h"
9
10
11 /* Comment out the following for less verbose output.  */
12 #define LOG(c) __libc_write (2, c "\n", strlen (c "\n"))
13
14
15 /* Handle for a process.  This type is opaque.  */
16 struct td_thragent
17 {
18   /* Delivered by the debugger and we have to pass it back in the
19      proc callbacks.  */
20   struct ps_prochandle *ph;
21
22   /* Some cached information.  */
23
24   /* Address of the `__pthread_handles' array.  */
25   struct pthread_handle_struct *handles;
26
27   /* Address of the `pthread_kyes' array.  */
28   struct pthread_key_struct *keys;
29
30   /* Maximum number of threads.  */
31   int pthread_threads_max;
32
33   /* Maximum number of thread-local data keys.  */
34   int pthread_keys_max;
35
36   /* Size of 2nd level array for thread-local data keys.  */
37   int pthread_key_2ndlevel_size;
38
39   /* Sizeof struct _pthread_descr_struct.  */
40   int sizeof_descr;
41
42   /* Pointer to the `__pthread_threads_events' variable in the target.  */
43   psaddr_t pthread_threads_eventsp;
44
45   /* Pointer to the `__pthread_last_event' variable in the target.  */
46   psaddr_t pthread_last_event;
47
48   /* Pointer to the `__pthread_handles_num' variable.  */
49   psaddr_t pthread_handles_num;
50 };
51
52
53 /* Type used internally to keep track of thread agent descriptors.  */
54 struct agent_list
55 {
56   td_thragent_t *ta;
57   struct agent_list *next;
58 };
59
60 /* List of all known descriptors.  */
61 extern struct agent_list *__td_agent_list;
62
63 /* Function used to test for correct thread agent pointer.  */
64 static inline int
65 ta_ok (const td_thragent_t *ta)
66 {
67   struct agent_list *runp = __td_agent_list;
68
69   if (ta == NULL)
70     return 0;
71
72   while (runp != NULL && runp->ta != ta)
73     runp = runp->next;
74
75   return runp != NULL;
76 }
77
78 #endif /* thread_dbP.h */