diff options
author | Florian Weimer <fweimer@redhat.com> | 2021-03-16 18:05:39 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2021-03-18 22:20:55 +0100 |
commit | 6c08324c5e5f2339965b9701d19b24c6a1105b53 (patch) | |
tree | 91357edfcfb2fe2f71e2a402f49b3127503e46c5 | |
parent | 39b6e03c0bb12d3766b488d899dacdaeb4663595 (diff) | |
download | glibc-6c08324c5e5f2339965b9701d19b24c6a1105b53.tar.gz |
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-- | sysdeps/nptl/fork.c | 11 | ||||
-rw-r--r-- | sysdeps/nptl/pthread-functions.h | 1 |
3 files changed, 2 insertions, 31 deletions
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c index 49d811aed7..de64e34783 100644 --- a/nptl/nptl-init.c +++ b/nptl/nptl-init.c @@ -60,14 +60,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 = { @@ -92,25 +84,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/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c index ffc8f9d041..a2a0643a1d 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. */ |