about summary refs log tree commit diff
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
glibc-e320ef46a7283517aeba1decc20ffb38ed131281.tar.xz
glibc-e320ef46a7283517aeba1decc20ffb38ed131281.zip
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.  */