summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkos Chandras <markos.chandras@imgtec.com>2013-01-15 13:47:31 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2013-02-27 22:16:12 +0100
commit49d3f93362c7eb359f82a4d9204a0519f73f3820 (patch)
treec902e28c3c05dc872ecfee47ba509248d4c68bd2
parent79cd5fb435d910233b1eb03c93c6ae05908ab42b (diff)
libc/pause: Enable pause_nocancel for arches without __NR_pause
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
-rw-r--r--libc/sysdeps/linux/common/not-cancel.h6
-rw-r--r--libc/sysdeps/linux/common/pause.c4
2 files changed, 6 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/common/not-cancel.h b/libc/sysdeps/linux/common/not-cancel.h
index 08dab8c9d..acf8e39e8 100644
--- a/libc/sysdeps/linux/common/not-cancel.h
+++ b/libc/sysdeps/linux/common/not-cancel.h
@@ -102,9 +102,11 @@ extern int __openat64_nocancel (int fd, const char *fname, int oflag,
#ifdef __NR_pause
# define pause_not_cancel() \
INLINE_SYSCALL (pause, 0)
-/*#else
+#else
+# include <unistd.h>
+extern __typeof(pause) __pause_nocancel;
# define pause_not_cancel() \
- __pause_nocancel ()*/
+ __pause_nocancel ()
#endif
/* Uncancelable nanosleep. */
diff --git a/libc/sysdeps/linux/common/pause.c b/libc/sysdeps/linux/common/pause.c
index 32fe839c0..c35ecd5d5 100644
--- a/libc/sysdeps/linux/common/pause.c
+++ b/libc/sysdeps/linux/common/pause.c
@@ -25,7 +25,7 @@ int
# ifdef __LINUXTHREADS_OLD__
weak_function
# endif
-pause(void)
+__NC(pause)(void)
{
sigset_t set;
@@ -36,6 +36,6 @@ pause(void)
So no need for anything special here. */
return sigsuspend(&set);
}
-lt_strong_alias(pause)
+CANCELLABLE_SYSCALL(int, pause, (void), ())
LIBC_CANCEL_HANDLED (); /* sigsuspend handles our cancellation. */
#endif