diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/nptl/Makefile | 3 | ||||
-rw-r--r-- | sysdeps/nptl/librt-cancellation.c | 24 | ||||
-rw-r--r-- | sysdeps/nptl/lowlevellock-futex.h | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/socketcall.h | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sysdep-cancel.h | 44 |
5 files changed, 12 insertions, 72 deletions
diff --git a/sysdeps/nptl/Makefile b/sysdeps/nptl/Makefile index adcced4..632cd36 100644 --- a/sysdeps/nptl/Makefile +++ b/sysdeps/nptl/Makefile @@ -21,8 +21,7 @@ libpthread-sysdep_routines += errno-loc endif ifeq ($(subdir),rt) -librt-sysdep_routines += timer_routines librt-cancellation -CFLAGS-librt-cancellation.c += -fexceptions -fasynchronous-unwind-tables +librt-sysdep_routines += timer_routines tests += tst-mqueue8x CFLAGS-tst-mqueue8x.c += -fexceptions diff --git a/sysdeps/nptl/librt-cancellation.c b/sysdeps/nptl/librt-cancellation.c deleted file mode 100644 index 1ad0eb1..0000000 --- a/sysdeps/nptl/librt-cancellation.c +++ /dev/null @@ -1,24 +0,0 @@ -/* Copyright (C) 2002-2021 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#include <nptl/pthreadP.h> - - -#define __pthread_enable_asynccancel __librt_enable_asynccancel -#define __pthread_disable_asynccancel __librt_disable_asynccancel -#include <nptl/cancellation.c> diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h index ca96397..66ebfe5 100644 --- a/sysdeps/nptl/lowlevellock-futex.h +++ b/sysdeps/nptl/lowlevellock-futex.h @@ -121,18 +121,18 @@ /* Like lll_futex_wait, but acting as a cancellable entrypoint. */ # define lll_futex_wait_cancel(futexp, val, private) \ ({ \ - int __oldtype = CANCEL_ASYNC (); \ + int __oldtype = LIBC_CANCEL_ASYNC (); \ long int __err = lll_futex_wait (futexp, val, LLL_SHARED); \ - CANCEL_RESET (__oldtype); \ + LIBC_CANCEL_RESET (__oldtype); \ __err; \ }) /* Like lll_futex_timed_wait, but acting as a cancellable entrypoint. */ # define lll_futex_timed_wait_cancel(futexp, val, timeout, private) \ ({ \ - int __oldtype = CANCEL_ASYNC (); \ + int __oldtype = LIBC_CANCEL_ASYNC (); \ long int __err = lll_futex_timed_wait (futexp, val, timeout, private); \ - CANCEL_RESET (__oldtype); \ + LIBC_CANCEL_RESET (__oldtype); \ __err; \ }) diff --git a/sysdeps/unix/sysv/linux/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h index 07702fc..3084623 100644 --- a/sysdeps/unix/sysv/linux/socketcall.h +++ b/sysdeps/unix/sysv/linux/socketcall.h @@ -89,11 +89,6 @@ }) -#if IS_IN (libc) -# define __pthread_enable_asynccancel __libc_enable_asynccancel -# define __pthread_disable_asynccancel __libc_disable_asynccancel -#endif - #define SOCKETCALL_CANCEL(name, args...) \ ({ \ int oldtype = LIBC_CANCEL_ASYNC (); \ diff --git a/sysdeps/unix/sysv/linux/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sysdep-cancel.h index da2f08f..c64cfff 100644 --- a/sysdeps/unix/sysv/linux/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/sysdep-cancel.h @@ -24,44 +24,14 @@ #include <tls.h> #include <errno.h> -/* The two functions are in libc.so and not exported. */ -extern int __libc_enable_asynccancel (void) attribute_hidden; -extern void __libc_disable_asynccancel (int oldtype) attribute_hidden; - -/* The two functions are in librt.so and not exported. */ -extern int __librt_enable_asynccancel (void) attribute_hidden; -extern void __librt_disable_asynccancel (int oldtype) attribute_hidden; - -/* The two functions are in libpthread.so and not exported. */ -extern int __pthread_enable_asynccancel (void) attribute_hidden; -extern void __pthread_disable_asynccancel (int oldtype) attribute_hidden; - /* Set cancellation mode to asynchronous. */ -#define CANCEL_ASYNC() \ - __pthread_enable_asynccancel () -/* Reset to previous cancellation mode. */ -#define CANCEL_RESET(oldtype) \ - __pthread_disable_asynccancel (oldtype) - -#if IS_IN (libc) -/* Same as CANCEL_ASYNC, but for use in libc.so. */ -# define LIBC_CANCEL_ASYNC() \ - __libc_enable_asynccancel () -/* Same as CANCEL_RESET, but for use in libc.so. */ -# define LIBC_CANCEL_RESET(oldtype) \ - __libc_disable_asynccancel (oldtype) -#elif IS_IN (libpthread) -# define LIBC_CANCEL_ASYNC() CANCEL_ASYNC () -# define LIBC_CANCEL_RESET(val) CANCEL_RESET (val) -#elif IS_IN (librt) -# define LIBC_CANCEL_ASYNC() \ - __librt_enable_asynccancel () -# define LIBC_CANCEL_RESET(val) \ - __librt_disable_asynccancel (val) -#else -# define LIBC_CANCEL_ASYNC() 0 /* Just a dummy value. */ -# define LIBC_CANCEL_RESET(val) ((void)(val)) /* Nothing, but evaluate it. */ -#endif +extern int __pthread_enable_asynccancel (void); +libc_hidden_proto (__pthread_enable_asynccancel) +#define LIBC_CANCEL_ASYNC() __pthread_enable_asynccancel () +/* Reset to previous cancellation mode. */ +extern void __pthread_disable_asynccancel (int oldtype); +libc_hidden_proto (__pthread_disable_asynccancel) +#define LIBC_CANCEL_RESET(oldtype) __pthread_disable_asynccancel (oldtype) #endif |