Browse Source

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>
Markos Chandras 11 years ago
parent
commit
49d3f93362
2 changed files with 6 additions and 4 deletions
  1. 4 2
      libc/sysdeps/linux/common/not-cancel.h
  2. 2 2
      libc/sysdeps/linux/common/pause.c

+ 4 - 2
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.  */

+ 2 - 2
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