diff options
author | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-09-26 09:53:37 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-09-26 09:53:37 +0200 |
commit | 8fb9dbf08043e5783f1e0680655af04ecf9888cb (patch) | |
tree | 6c63dbb5b09dcdad106b71b686d17ed998703a12 | |
parent | bd215ef170fb85b7572b617dacdeab26edd3d21c (diff) |
linuxthreads: use tkill syscall for raise
Seems better and more stable.
-rw-r--r-- | libpthread/linuxthreads/signals.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libpthread/linuxthreads/signals.c b/libpthread/linuxthreads/signals.c index d8dbc78bd..0c0f2b6b1 100644 --- a/libpthread/linuxthreads/signals.c +++ b/libpthread/linuxthreads/signals.c @@ -17,6 +17,7 @@ #include <errno.h> #include <signal.h> #include <stdio.h> +#include <sys/syscall.h> #include "pthread.h" #include "internals.h" #include "spinlock.h" @@ -233,14 +234,13 @@ int sigwait(const sigset_t * set, int * sig) /* Redefine raise() to send signal to calling thread only, as per POSIX 1003.1c */ libpthread_hidden_proto(raise) -int raise (int sig) -{ - int retcode = pthread_kill(pthread_self(), sig); - if (retcode == 0) - return 0; - else { - errno = retcode; - return -1; - } +int raise (int sig) { + int ret; + pid_t tid; + + tid = INLINE_SYSCALL(gettid, 0); + ret = INLINE_SYSCALL(tkill, 2, tid, sig); + + return ret; } libpthread_hidden_def(raise) |