path: root/src/signal
diff options
authorRich Felker <>2011-03-19 21:36:10 -0400
committerRich Felker <>2011-03-19 21:36:10 -0400
commit685e40bb09f5f24a2af54ea09c97328808f76990 (patch)
tree73bbf60045bb3a9c8af4f2639e8adb2ad1ea6994 /src/signal
parent462dbfc20788a6c9dd1ea4bb1cef086aa189615a (diff)
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')
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;
- ret = syscall2(__NR_rt_sigsuspend, (long)mask, SYSCALL_SIGSET_SIZE);
+ ret = syscall(__NR_rt_sigsuspend, mask, 8);
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;
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);
return ret;