version 1.5, 2017/08/10 13:35:18 |
version 1.6, 2017/11/28 18:57:02 |
|
|
*/ |
*/ |
|
|
struct tib { |
struct tib { |
|
void *tib_atexit; |
int tib_thread_flags; /* internal to libpthread */ |
int tib_thread_flags; /* internal to libpthread */ |
pid_t tib_tid; |
pid_t tib_tid; |
int tib_cantcancel; |
int tib_cantcancel; |
|
|
int tib_cantcancel; |
int tib_cantcancel; |
pid_t tib_tid; |
pid_t tib_tid; |
int tib_thread_flags; /* internal to libpthread */ |
int tib_thread_flags; /* internal to libpthread */ |
#if !defined(__LP64__) && !defined(__i386) |
void *tib_atexit; |
int __tib_padding; /* padding for 8byte alignment */ |
|
#endif |
|
}; |
}; |
|
|
#if defined(__i386) || defined(__amd64) |
#if defined(__i386) || defined(__amd64) |
# define _TIB_PREP(tib) \ |
# define _TIB_PREP(tib) \ |
((void)((tib)->__tib_self = (tib))) |
((void)((tib)->__tib_self = (tib))) |
#elif !defined(__LP64__) && !defined(__i386) |
|
# define _TIB_PREP(tib) ((void)((tib)->__tib_padding = 0)) |
|
#endif |
#endif |
|
|
#define TIB_EXTRA_ALIGN sizeof(void *) |
#define TIB_EXTRA_ALIGN sizeof(void *) |
|
|
|
|
#define TIB_INIT(tib, dtv, thread) do { \ |
#define TIB_INIT(tib, dtv, thread) do { \ |
(tib)->tib_thread = (thread); \ |
(tib)->tib_thread = (thread); \ |
|
(tib)->tib_atexit = NULL; \ |
(tib)->tib_locale = NULL; \ |
(tib)->tib_locale = NULL; \ |
(tib)->tib_cantcancel = 0; \ |
(tib)->tib_cantcancel = 0; \ |
(tib)->tib_cancel_point = 0; \ |
(tib)->tib_cancel_point = 0; \ |