|
@@ -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)
|