From 685e40bb09f5f24a2af54ea09c97328808f76990 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 19 Mar 2011 21:36:10 -0400 Subject: 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. --- src/signal/sigpending.c | 2 +- src/signal/sigsuspend.c | 2 +- src/signal/sigtimedwait.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/signal') 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; -- cgit v1.2.1