123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- #ifndef _DESCR_H
- #define _DESCR_H 1
- #include <limits.h>
- #include <sched.h>
- #include <setjmp.h>
- #include <stdbool.h>
- #include <sys/types.h>
- #include <hp-timing.h>
- #include <list.h>
- #include <lowlevellock.h>
- #include <pthreaddef.h>
- #include <dl-sysdep.h>
- #include "../nptl_db/thread_db.h"
- #include <tls.h>
- #ifdef HAVE_FORCED_UNWIND
- # include <unwind.h>
- #endif
- #define __need_res_state
- #include <resolv.h>
- #ifndef TCB_ALIGNMENT
- # define TCB_ALIGNMENT sizeof (double)
- #endif
- #define PTHREAD_KEY_2NDLEVEL_SIZE 32
- #define PTHREAD_KEY_1STLEVEL_SIZE \
- ((PTHREAD_KEYS_MAX + PTHREAD_KEY_2NDLEVEL_SIZE - 1) \
- / PTHREAD_KEY_2NDLEVEL_SIZE)
- struct pthread_unwind_buf
- {
- struct
- {
- __jmp_buf jmp_buf;
- int mask_was_saved;
- } cancel_jmp_buf[1];
- union
- {
-
- void *pad[4];
- struct
- {
-
- struct pthread_unwind_buf *prev;
-
- struct _pthread_cleanup_buffer *cleanup;
-
- int canceltype;
- } data;
- } priv;
- };
- struct xid_command
- {
- int syscall_no;
- long id[3];
- volatile int cntr;
- };
- struct pthread
- {
- union
- {
- #if !TLS_DTV_AT_TP
-
- tcbhead_t header;
- #else
- struct
- {
- int multiple_threads;
- } header;
- #endif
-
- void *__padding[16];
- };
-
- list_t list;
-
- pid_t tid;
-
- pid_t pid;
-
- struct _pthread_cleanup_buffer *cleanup;
-
- struct pthread_unwind_buf *cleanup_jmp_buf;
- #define HAVE_CLEANUP_JMP_BUF
-
- int cancelhandling;
-
- #define CANCELSTATE_BIT 0
- #define CANCELSTATE_BITMASK 0x01
-
- #define CANCELTYPE_BIT 1
- #define CANCELTYPE_BITMASK 0x02
-
- #define CANCELING_BIT 2
- #define CANCELING_BITMASK 0x04
-
- #define CANCELED_BIT 3
- #define CANCELED_BITMASK 0x08
-
- #define EXITING_BIT 4
- #define EXITING_BITMASK 0x10
-
- #define TERMINATED_BIT 5
- #define TERMINATED_BITMASK 0x20
-
- #define CANCEL_RESTMASK 0xffffffc0
- #define CANCEL_ENABLED_AND_CANCELED(value) \
- (((value) & (CANCELSTATE_BITMASK | CANCELED_BITMASK | EXITING_BITMASK \
- | CANCEL_RESTMASK | TERMINATED_BITMASK)) == CANCELED_BITMASK)
- #define CANCEL_ENABLED_AND_CANCELED_AND_ASYNCHRONOUS(value) \
- (((value) & (CANCELSTATE_BITMASK | CANCELTYPE_BITMASK | CANCELED_BITMASK \
- | EXITING_BITMASK | CANCEL_RESTMASK | TERMINATED_BITMASK)) \
- == (CANCELTYPE_BITMASK | CANCELED_BITMASK))
-
- struct pthread_key_data
- {
-
- uintptr_t seq;
-
- void *data;
- } specific_1stblock[PTHREAD_KEY_2NDLEVEL_SIZE];
-
- bool specific_used;
-
- struct pthread_key_data *specific[PTHREAD_KEY_1STLEVEL_SIZE];
-
- bool report_events;
-
- bool user_stack;
-
- bool stopped_start;
-
- lll_lock_t lock;
- #if HP_TIMING_AVAIL
-
- hp_timing_t cpuclock_offset;
- #endif
-
- struct pthread *joinid;
-
- #define IS_DETACHED(pd) ((pd)->joinid == (pd))
-
- int flags;
-
- void *result;
-
- struct sched_param schedparam;
- int schedpolicy;
-
- void *(*start_routine) (void *);
- void *arg;
-
- td_eventbuf_t eventbuf;
-
- struct pthread *nextevent;
- #ifdef HAVE_FORCED_UNWIND
-
- struct _Unwind_Exception exc;
- #endif
-
- void *stackblock;
- size_t stackblock_size;
-
- size_t guardsize;
-
- size_t reported_guardsize;
-
- struct __res_state res;
- } __attribute ((aligned (TCB_ALIGNMENT)));
- #endif
|