1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22: #include "thread_dbP.h"
23: #include <tls.h>
24:
25: typedef struct pthread pthread;
26: typedef struct pthread_key_struct pthread_key_struct;
27: typedef struct pthread_key_data pthread_key_data;
28: typedef struct
29: {
30: struct pthread_key_data data[PTHREAD_KEY_2NDLEVEL_SIZE];
31: }
32: pthread_key_data_level2;
33:
34: typedef struct
35: {
36: union dtv dtv[UINT32_MAX / 2 / sizeof (union dtv)];
37: } dtv;
38:
39: typedef struct link_map link_map;
40:
41:
42: extern bool __nptl_initial_report_events;
43:
44: #define schedparam_sched_priority schedparam.sched_priority
45:
46: #define eventbuf_eventmask eventbuf.eventmask
47: #define eventbuf_eventmask_event_bits eventbuf.eventmask.event_bits
48:
49: #define DESC(name, offset, obj) \
50: DB_DEFINE_DESC (name, 8 * sizeof (obj), 1, offset);
51: #define ARRAY_DESC(name, offset, obj) \
52: DB_DEFINE_DESC (name, \
53: 8 * sizeof (obj)[0], sizeof (obj) / sizeof (obj)[0], \
54: offset);
55:
56: #if TLS_TCB_AT_TP
57: # define dtvp header.dtv
58: #elif TLS_DTV_AT_TP
59:
60:
61:
62: DESC (_thread_db_pthread_dtvp,
63: TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv)
64: - (TLS_TCB_SIZE == 0 ? sizeof (tcbhead_t) : 0), union dtv *)
65: #endif
66:
67:
68: #define DB_STRUCT(type) \
69: const uint32_t _thread_db_sizeof_##type = sizeof (type);
70: #define DB_STRUCT_FIELD(type, field) \
71: DESC (_thread_db_##type##_##field, \
72: offsetof (type, field), ((type *) 0)->field)
73: #define DB_STRUCT_ARRAY_FIELD(type, field) \
74: ARRAY_DESC (_thread_db_##type##_##field, \
75: offsetof (type, field), ((type *) 0)->field)
76: #define DB_VARIABLE(name) DESC (_thread_db_##name, 0, name)
77: #define DB_ARRAY_VARIABLE(name) ARRAY_DESC (_thread_db_##name, 0, name)
78: #define DB_SYMBOL(name)
79: #define DB_FUNCTION(name)
80: #include "structs.def"
81: #undef DB_STRUCT
82: #undef DB_STRUCT_FIELD
83: #undef DB_SYMBOL
84: #undef DB_FUNCTION
85: #undef DB_VARIABLE
86: #undef DESC
87:
88:
89:
90: #ifdef DB_THREAD_SELF
91: # ifdef DB_THREAD_SELF_INCLUDE
92: # include DB_THREAD_SELF_INCLUDE
93: # endif
94:
95:
96: # define CONST_THREAD_AREA(bits, value) \
97: const uint32_t _thread_db_const_thread_area = (value);
98: # define REGISTER_THREAD_AREA(bits, regofs, scale) \
99: DB_DEFINE_DESC (_thread_db_register##bits##_thread_area, \
100: bits, (scale), (regofs));
101: # define REGISTER(bits, size, regofs, bias) \
102: DB_DEFINE_DESC (_thread_db_register##bits, size, (uint32_t)(bias), (regofs));
103:
104: DB_THREAD_SELF
105: #endif