diff options
author | Peter S. Mazinger <ps.m@gmx.net> | 2011-04-21 23:09:39 +0200 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2012-06-15 14:00:41 +0200 |
commit | d3b81557ecfbb8b08fba7fdab11af932d89b47b4 (patch) | |
tree | a3933764a7c032a05df97ed72c8cbcb5e7715b5b | |
parent | 613b0fabf06d3a06c44da422ea5fef9b1d011729 (diff) |
nanosleep.c: use cancel.h
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r-- | libc/sysdeps/linux/common/nanosleep.c | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/libc/sysdeps/linux/common/nanosleep.c b/libc/sysdeps/linux/common/nanosleep.c index 1e692bbf0..dd3f4dd14 100644 --- a/libc/sysdeps/linux/common/nanosleep.c +++ b/libc/sysdeps/linux/common/nanosleep.c @@ -9,32 +9,13 @@ #include <sys/syscall.h> #include <time.h> +#include <cancel.h> -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ -#include <sysdep-cancel.h> -#include <pthreadP.h> -#else -#define SINGLE_THREAD_P 1 -#endif - -#define __NR___syscall_nanosleep __NR_nanosleep -static _syscall2(int, __syscall_nanosleep, const struct timespec *, req, +#define __NR___nanosleep_nocancel __NR_nanosleep +static _syscall2(int, __NC(nanosleep), const struct timespec *, req, struct timespec *, rem); -extern __typeof(nanosleep) __libc_nanosleep; - -int __libc_nanosleep(const struct timespec *req, struct timespec *rem) -{ - if (SINGLE_THREAD_P) - return __syscall_nanosleep(req, rem); - -#ifdef __UCLIBC_HAS_THREADS_NATIVE__ - int oldtype = LIBC_CANCEL_ASYNC (); - int result = __syscall_nanosleep(req, rem); - LIBC_CANCEL_RESET (oldtype); - return result; -#endif -} - -weak_alias(__libc_nanosleep,nanosleep) -libc_hidden_weak(nanosleep) +CANCELLABLE_SYSCALL(int, nanosleep, + (const struct timespec *req, struct timespec *rem), + (req, rem)) +lt_libc_hidden(nanosleep) |