summaryrefslogtreecommitdiff
path: root/nptl/init.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-02-14 18:33:54 +0000
committerUlrich Drepper <drepper@redhat.com>2003-02-14 18:33:54 +0000
commite320ef46a7283517aeba1decc20ffb38ed131281 (patch)
treebe9af48c1823694fde8d21ef1de61918b8205126 /nptl/init.c
parent700bf7af9f98174f33ac177332bcbcd644055474 (diff)
downloadglibc-e320ef46a7283517aeba1decc20ffb38ed131281.tar.gz
Update.
* descr.h: Define CANCELING_BIT and CANCELING_BITMASK. Introduce after CANCELTYPE_BIT, move the other bits up. Update CANCEL_RESTMASK. * init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval. * pthread_cancel.c (pthread_cancel): Likewise. Also set CANCELING_BIT if asynchronous canceling is enabled. * pthread_join.c (pthread_join): When recognizing circular joins, take into account the other thread might be already canceled. * Makefile (tests): Add tst-join5. * tst-join5.c: New file.
Diffstat (limited to 'nptl/init.c')
-rw-r--r--nptl/init.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/nptl/init.c b/nptl/init.c
index 92afd09546..4d30084efb 100644
--- a/nptl/init.c
+++ b/nptl/init.c
@@ -130,7 +130,7 @@ sigcancel_handler (int sig __attribute ((unused)))
is already set but if the signal is directly send (internally or
from another process) is has to be done here. */
int oldval = THREAD_GETMEM (self, cancelhandling);
- int newval = oldval | CANCELED_BITMASK;
+ int newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK;
if (oldval == newval || (oldval & EXITING_BITMASK) != 0)
/* Already canceled or exiting. */