about summary refs log tree commit diff
path: root/src/signal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-03-19 21:36:10 -0400
committerRich Felker <dalias@aerifal.cx>2011-03-19 21:36:10 -0400
commit685e40bb09f5f24a2af54ea09c97328808f76990 (patch)
tree73bbf60045bb3a9c8af4f2639e8adb2ad1ea6994 /src/signal
parent462dbfc20788a6c9dd1ea4bb1cef086aa189615a (diff)
downloadmusl-685e40bb09f5f24a2af54ea09c97328808f76990.tar.gz
musl-685e40bb09f5f24a2af54ea09c97328808f76990.tar.xz
musl-685e40bb09f5f24a2af54ea09c97328808f76990.zip
syscall overhaul part two - unify public and internal syscall interface
with this patch, the syscallN() functions are no longer needed; a
variadic syscall() macro allows syscalls with anywhere from 0 to 6
arguments to be made with a single macro name. also, manually casting
each non-integer argument with (long) is no longer necessary; the
casts are hidden in the macros.

some source files which depended on being able to define the old macro
SYSCALL_RETURNS_ERRNO have been modified to directly use __syscall()
instead of syscall(). references to SYSCALL_SIGSET_SIZE and SYSCALL_LL
have also been changed.

x86_64 has not been tested, and may need a follow-up commit to fix any
minor bugs/oversights.
Diffstat (limited to 'src/signal')
-rw-r--r--src/signal/sigpending.c2
-rw-r--r--src/signal/sigsuspend.c2
-rw-r--r--src/signal/sigtimedwait.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/src/signal/sigpending.c b/src/signal/sigpending.c
index 7deda256..496025a7 100644
--- a/src/signal/sigpending.c
+++ b/src/signal/sigpending.c
@@ -3,5 +3,5 @@
 
 int sigpending(sigset_t *set)
 {
-	return syscall2(__NR_rt_sigpending, (long)set, SYSCALL_SIGSET_SIZE);
+	return syscall(__NR_rt_sigpending, set, 8);
 }
diff --git a/src/signal/sigsuspend.c b/src/signal/sigsuspend.c
index 0806288c..6c13fce1 100644
--- a/src/signal/sigsuspend.c
+++ b/src/signal/sigsuspend.c
@@ -6,7 +6,7 @@ int sigsuspend(const sigset_t *mask)
 {
 	int ret;
 	CANCELPT_BEGIN;
-	ret = syscall2(__NR_rt_sigsuspend, (long)mask, SYSCALL_SIGSET_SIZE);
+	ret = syscall(__NR_rt_sigsuspend, mask, 8);
 	CANCELPT_END;
 	return ret;
 }
diff --git a/src/signal/sigtimedwait.c b/src/signal/sigtimedwait.c
index 93f31a71..a0edaaf3 100644
--- a/src/signal/sigtimedwait.c
+++ b/src/signal/sigtimedwait.c
@@ -8,7 +8,7 @@ int sigtimedwait(const sigset_t *mask, siginfo_t *si, const struct timespec *tim
 	int ret;
 	CANCELPT_BEGIN;
 	do {
-		ret = syscall4(__NR_rt_sigtimedwait, (long)mask, (long)si, (long)timeout, SYSCALL_SIGSET_SIZE);
+		ret = syscall(__NR_rt_sigtimedwait, mask, si, timeout, 8);
 	} while (ret<0 && errno==EINTR);
 	CANCELPT_END;
 	return ret;