diff options
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/ChangeLog | 4 | ||||
-rw-r--r-- | nptl/descr.h | 65 |
2 files changed, 37 insertions, 32 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index c798977cc6..7bfcef863b 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,7 @@ +2003-04-06 Ulrich Drepper <drepper@redhat.com> + + * descr.h (struct pthread): Move cancelhandling member to the front. + 2003-04-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/register-atfork.c: Define malloc_prepare, diff --git a/nptl/descr.h b/nptl/descr.h index 20e44af3be..3625b15088 100644 --- a/nptl/descr.h +++ b/nptl/descr.h @@ -86,8 +86,36 @@ struct pthread /* List of cleanup buffers. */ struct _pthread_cleanup_buffer *cleanup; - /* True if events must be reported. */ - bool report_events; + /* Flags determining processing of cancellation. */ + int cancelhandling; + /* Bit set if cancellation is disabled. */ +#define CANCELSTATE_BIT 0 +#define CANCELSTATE_BITMASK 0x01 + /* Bit set if asynchronous cancellation mode is selected. */ +#define CANCELTYPE_BIT 1 +#define CANCELTYPE_BITMASK 0x02 + /* Bit set if canceling has been initiated. */ +#define CANCELING_BIT 2 +#define CANCELING_BITMASK 0x04 + /* Bit set if canceled. */ +#define CANCELED_BIT 3 +#define CANCELED_BITMASK 0x08 + /* Bit set if thread is exiting. */ +#define EXITING_BIT 4 +#define EXITING_BITMASK 0x10 + /* Bit set if thread terminated and TCB is freed. */ +#define TERMINATED_BIT 5 +#define TERMINATED_BITMASK 0x20 + /* Mask for the rest. Helps the compiler to optimize. */ +#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)) /* We allocate one block of references here. This should be enough to avoid allocating any memory dynamically for most applications. */ @@ -108,6 +136,9 @@ struct pthread /* Two-level array for the thread-specific data. */ struct pthread_key_data *specific[PTHREAD_KEY_1STLEVEL_SIZE]; + /* True if events must be reported. */ + bool report_events; + /* True if the user provided the stack. */ bool user_stack; @@ -129,36 +160,6 @@ struct pthread /* Check whether a thread is detached. */ #define IS_DETACHED(pd) ((pd)->joinid == (pd)) - /* Flags determining processing of cancellation. */ - int cancelhandling; - /* Bit set if cancellation is disabled. */ -#define CANCELSTATE_BIT 0 -#define CANCELSTATE_BITMASK 0x01 - /* Bit set if asynchronous cancellation mode is selected. */ -#define CANCELTYPE_BIT 1 -#define CANCELTYPE_BITMASK 0x02 - /* Bit set if canceling has been initiated. */ -#define CANCELING_BIT 2 -#define CANCELING_BITMASK 0x04 - /* Bit set if canceled. */ -#define CANCELED_BIT 3 -#define CANCELED_BITMASK 0x08 - /* Bit set if thread is exiting. */ -#define EXITING_BIT 4 -#define EXITING_BITMASK 0x10 - /* Bit set if thread terminated and TCB is freed. */ -#define TERMINATED_BIT 5 -#define TERMINATED_BITMASK 0x20 - /* Mask for the rest. Helps the compiler to optimize. */ -#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)) /* Setjmp buffer to be used if try/finally is not available. */ sigjmp_buf cancelbuf; #define HAVE_CANCELBUF 1 |