]> git.ipfire.org Git - thirdparty/glibc.git/blob - nptl_db/db_info.c
* sysdeps/unix/sysv/linux/speed.c
[thirdparty/glibc.git] / nptl_db / db_info.c
1 /* This file is included by pthread_create.c to define in libpthread
2 all the magic symbols required by libthread_db.
3
4 Copyright (C) 2003 Free Software Foundation, Inc.
5 This file is part of the GNU C Library.
6
7 The GNU C Library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or (at your option) any later version.
11
12 The GNU C Library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with the GNU C Library; if not, write to the Free
19 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20 02111-1307 USA. */
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)]; /* No constant bound. */
37 } dtv;
38
39 typedef struct link_map link_map;
40
41
42 #define schedparam_sched_priority schedparam.sched_priority
43
44 #define eventbuf_eventmask eventbuf.eventmask
45 #define eventbuf_eventmask_event_bits eventbuf.eventmask.event_bits
46
47 #define DESC(name, offset, obj) \
48 DB_DEFINE_DESC (name, 8 * sizeof (obj), 1, offset);
49 #define ARRAY_DESC(name, offset, obj) \
50 DB_DEFINE_DESC (name, \
51 8 * sizeof (obj)[0], sizeof (obj) / sizeof (obj)[0], \
52 offset);
53
54 #if TLS_TCB_AT_TP
55 # define dtvp header.dtv
56 #elif TLS_DTV_AT_TP
57 /* Special case hack. */
58 DESC (_thread_db_pthread_dtvp,
59 TLS_PRE_TCB_SIZE + offsetof (tcbhead_t, dtv), union dtv)
60 #endif
61
62
63 #define DB_STRUCT(type) \
64 const uint32_t _thread_db_sizeof_##type = sizeof (type);
65 #define DB_STRUCT_FIELD(type, field) \
66 DESC (_thread_db_##type##_##field, \
67 offsetof (type, field), ((type *) 0)->field)
68 #define DB_STRUCT_ARRAY_FIELD(type, field) \
69 ARRAY_DESC (_thread_db_##type##_##field, \
70 offsetof (type, field), ((type *) 0)->field)
71 #define DB_VARIABLE(name) DESC (_thread_db_##name, 0, name)
72 #define DB_ARRAY_VARIABLE(name) ARRAY_DESC (_thread_db_##name, 0, name)
73 #define DB_SYMBOL(name) /* Nothing. */
74 #include "structs.def"
75 #undef DB_STRUCT
76 #undef DB_STRUCT_FIELD
77 #undef DB_SYMBOL
78 #undef DB_VARIABLE
79 #undef DESC
80
81
82
83 #ifdef DB_THREAD_SELF
84 # ifdef DB_THREAD_SELF_INCLUDE
85 # include DB_THREAD_SELF_INCLUDE
86 # endif
87
88 /* This macro is defined in the machine's tls.h using the three below. */
89 # define CONST_THREAD_AREA(bits, value) \
90 const uint32_t _thread_db_const_thread_area = (value);
91 # define REGISTER_THREAD_AREA(bits, regofs, scale) \
92 DB_DEFINE_DESC (_thread_db_register##bits##_thread_area, \
93 bits, (scale), (regofs));
94 # define REGISTER(bits, regofs, bias) \
95 DB_DEFINE_DESC (_thread_db_register##bits, bits, (uint32_t)(bias), (regofs));
96
97 DB_THREAD_SELF
98 #endif