Fix sigsuspend to use rt_sigsuspend on all platforms.
Change-Id: I981c1a66d35480d4457a0a08a1b042dac94daa5b
diff --git a/libc/bionic/signalfd.cpp b/libc/bionic/signalfd.cpp
index b7e6474..36ef81d 100644
--- a/libc/bionic/signalfd.cpp
+++ b/libc/bionic/signalfd.cpp
@@ -28,7 +28,7 @@
#include <sys/signalfd.h>
-#include <private/kernel_sigset_t.h>
+#include "private/kernel_sigset_t.h"
extern "C" int signalfd4(int fd, kernel_sigset_t* mask, size_t sizemask, int flags);
diff --git a/libc/bionic/sigsuspend.c b/libc/bionic/sigsuspend.cpp
similarity index 81%
rename from libc/bionic/sigsuspend.c
rename to libc/bionic/sigsuspend.cpp
index fd08631..fb846b8 100644
--- a/libc/bionic/sigsuspend.c
+++ b/libc/bionic/sigsuspend.cpp
@@ -25,19 +25,14 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
-#include <signal.h>
-#ifdef __mips__
-extern int __sigsuspend(const sigset_t *);
-#else
-extern int __sigsuspend(int, int, unsigned int);
-#endif
-int sigsuspend(const sigset_t *_mask)
-{
-#ifdef __mips__
- return __sigsuspend(_mask);
-#else
- unsigned int mask = (unsigned int)*_mask;
- return __sigsuspend(0, 0, mask);
-#endif
+#include <signal.h>
+
+#include "private/kernel_sigset_t.h"
+
+extern "C" int __rt_sigsuspend(const kernel_sigset_t*, size_t);
+
+int sigsuspend(const sigset_t* bionic_set) {
+ kernel_sigset_t set(bionic_set);
+ return __rt_sigsuspend(&set, sizeof(set));
}
diff --git a/libc/bionic/sigwait.cpp b/libc/bionic/sigwait.cpp
index 1546fd6..873a368 100644
--- a/libc/bionic/sigwait.cpp
+++ b/libc/bionic/sigwait.cpp
@@ -31,7 +31,7 @@
#include <string.h>
#include <time.h>
-#include <private/kernel_sigset_t.h>
+#include "private/kernel_sigset_t.h"
extern "C" int __rt_sigtimedwait(const sigset_t* uthese, siginfo_t* uinfo, const struct timespec* uts, size_t sigsetsize);