From 2d3b00f49f1dec349a9bad0a8c1992782e9338a8 Mon Sep 17 00:00:00 2001
From: Peter S. Mazinger <ps.m@gmx.net>
Date: Sat, 23 Apr 2011 20:46:59 +0200
Subject: [PATCH 343/396] pause.c: add back usage of pause syscall

No idea why it was removed when NPTL was added,
but glibc uses it as well.

Signed-off-by: Peter S. Mazinger <ps.m@gmx.net>
---
 libc/sysdeps/linux/common/pause.c |   19 ++++++++++++++-----
 1 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/libc/sysdeps/linux/common/pause.c b/libc/sysdeps/linux/common/pause.c
index 8a4d821..32fe839 100644
--- a/libc/sysdeps/linux/common/pause.c
+++ b/libc/sysdeps/linux/common/pause.c
@@ -7,16 +7,24 @@
  * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  */
 
-#define __need_NULL
-#include <stddef.h>
+#include <sys/syscall.h>
 #include <unistd.h>
-#include <signal.h>
 #include <cancel.h>
 
+#ifdef __NR_pause
+/* even if it is not obvious, glibc uses the pause syscall, see syscalls.list */
+# define __NR___pause_nocancel __NR_pause
+static _syscall0(int, __NC(pause))
+CANCELLABLE_SYSCALL(int, pause, (void), ())
+#else
+# define __need_NULL
+# include <stddef.h>
+# include <signal.h>
+
 int
-#ifdef __LINUXTHREADS_OLD__
+# ifdef __LINUXTHREADS_OLD__
 weak_function
-#endif
+# endif
 pause(void)
 {
 	sigset_t set;
@@ -30,3 +38,4 @@ pause(void)
 }
 lt_strong_alias(pause)
 LIBC_CANCEL_HANDLED ();		/* sigsuspend handles our cancellation.  */
+#endif
-- 
1.7.0.4

