From 2b5174253155bdace1262ea2ab53d11347ecdefd Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Tue, 31 Mar 2020 15:43:25 -0300 Subject: nptl: Move cancel state out of cancelhandling Now that thread cancellation state is not accessed concurrently anymore, it is possible to move it out the 'cancelhandling'. The code is also simplified: CANCELLATION_P is replaced with a internal pthread_testcancel call and the CANCELSTATE_BIT{MASK} is removed. With this behavior pthread_setcancelstate does not require to act on cancellation if cancel type is asynchronous (is already handled either by pthread_setcanceltype or by the signal handler). Checked on x86_64-linux-gnu and aarch64-linux-gnu. --- nptl/cleanup_defer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'nptl/cleanup_defer.c') diff --git a/nptl/cleanup_defer.c b/nptl/cleanup_defer.c index 6d85359..873ab00 100644 --- a/nptl/cleanup_defer.c +++ b/nptl/cleanup_defer.c @@ -92,7 +92,7 @@ ___pthread_unregister_cancel_restore (__pthread_unwind_buf_t *buf) cancelhandling = curval; } - CANCELLATION_P (self); + __pthread_testcancel (); } } versioned_symbol (libc, ___pthread_unregister_cancel_restore, -- cgit v1.1