diff options
author | Rich Felker <dalias@aerifal.cx> | 2011-03-19 21:36:10 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2011-03-19 21:36:10 -0400 |
commit | 685e40bb09f5f24a2af54ea09c97328808f76990 (patch) | |
tree | 73bbf60045bb3a9c8af4f2639e8adb2ad1ea6994 /src/signal | |
parent | 462dbfc20788a6c9dd1ea4bb1cef086aa189615a (diff) | |
download | musl-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.c | 2 | ||||
-rw-r--r-- | src/signal/sigsuspend.c | 2 | ||||
-rw-r--r-- | src/signal/sigtimedwait.c | 2 |
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; |