diff options
author | Florian Weimer <fweimer@redhat.com> | 2021-04-21 19:49:51 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2021-04-21 19:49:51 +0200 |
commit | 66d99dc53a9aa2bbc7e8d7dd3ba3507d5ffe8597 (patch) | |
tree | a046f4d873f9207da87f4ba98e8879874b773411 | |
parent | 75376a3fb8429e3cf8275337ac56bf5f8127303b (diff) | |
download | glibc-66d99dc53a9aa2bbc7e8d7dd3ba3507d5ffe8597.tar.gz glibc-66d99dc53a9aa2bbc7e8d7dd3ba3507d5ffe8597.tar.xz glibc-66d99dc53a9aa2bbc7e8d7dd3ba3507d5ffe8597.zip |
nptl: Invoke the set_robust_list system call directly in fork
This removes one of the pthread forwarder functions. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-rw-r--r-- | nptl/nptl-init.c | 21 | ||||
-rw-r--r-- | nptl/pthreadP.h | 3 | ||||
-rw-r--r-- | sysdeps/nptl/fork.c | 11 | ||||
-rw-r--r-- | sysdeps/nptl/pthread-functions.h | 1 |
4 files changed, 2 insertions, 34 deletions
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c index 41c566c9bd..8f9d41ac62 100644 --- a/nptl/nptl-init.c +++ b/nptl/nptl-init.c @@ -59,14 +59,6 @@ int __set_robust_list_avail; /* Version of the library, used in libthread_db to detect mismatches. */ static const char nptl_version[] __attribute_used__ = VERSION; - -#ifdef SHARED -static -#else -extern -#endif -void __nptl_set_robust (struct pthread *); - #ifdef SHARED static const struct pthread_functions pthread_functions = { @@ -91,25 +83,12 @@ static const struct pthread_functions pthread_functions = .ptr___pthread_getspecific = __pthread_getspecific, .ptr___pthread_setspecific = __pthread_setspecific, .ptr__nptl_setxid = __nptl_setxid, - .ptr_set_robust = __nptl_set_robust }; # define ptr_pthread_functions &pthread_functions #else # define ptr_pthread_functions NULL #endif - -#ifdef SHARED -static -#endif -void -__nptl_set_robust (struct pthread *self) -{ - INTERNAL_SYSCALL_CALL (set_robust_list, &self->robust_head, - sizeof (struct robust_list_head)); -} - - /* For asynchronous cancellation we use a signal. This is the handler. */ static void sigcancel_handler (int sig, siginfo_t *si, void *ctx) diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h index 5242a2bce6..7a3906e2de 100644 --- a/nptl/pthreadP.h +++ b/nptl/pthreadP.h @@ -692,9 +692,6 @@ libc_hidden_proto (__nptl_deallocate_tsd) extern void __nptl_setxid_error (struct xid_command *cmdp, int error) attribute_hidden; extern int __nptl_setxid (struct xid_command *cmdp) attribute_hidden; -#ifndef SHARED -extern void __nptl_set_robust (struct pthread *self); -#endif extern void __nptl_stacks_freeres (void) attribute_hidden; diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c index ccdda11a7c..f41c40fca0 100644 --- a/sysdeps/nptl/fork.c +++ b/sysdeps/nptl/fork.c @@ -104,15 +104,8 @@ __libc_fork (void) self->robust_prev = &self->robust_head; #endif self->robust_head.list = &self->robust_head; -#ifdef SHARED - if (__builtin_expect (__libc_pthread_functions_init, 0)) - PTHFCT_CALL (ptr_set_robust, (self)); -#else - extern __typeof (__nptl_set_robust) __nptl_set_robust - __attribute__((weak)); - if (__builtin_expect (__nptl_set_robust != NULL, 0)) - __nptl_set_robust (self); -#endif + INTERNAL_SYSCALL_CALL (set_robust_list, &self->robust_head, + sizeof (struct robust_list_head)); /* Reset the lock state in the multi-threaded case. */ if (multiple_threads) diff --git a/sysdeps/nptl/pthread-functions.h b/sysdeps/nptl/pthread-functions.h index 2092ecef07..844838cd49 100644 --- a/sysdeps/nptl/pthread-functions.h +++ b/sysdeps/nptl/pthread-functions.h @@ -53,7 +53,6 @@ struct pthread_functions void *(*ptr___pthread_getspecific) (pthread_key_t); int (*ptr___pthread_setspecific) (pthread_key_t, const void *); int (*ptr__nptl_setxid) (struct xid_command *); - void (*ptr_set_robust) (struct pthread *); }; /* Variable in libc.so. */ |