diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-07-09 15:09:29 -0400 |
---|---|---|
committer | Austin Foxley <austinf@cetoncorp.com> | 2009-07-09 12:36:22 -0700 |
commit | ba82591be10020612165702d4ce64b44edbef034 (patch) | |
tree | 78a740ed73e876e7c7c2e9193638f47bf3112278 /libc/sysdeps/linux/common/bits/syscalls-common.h | |
parent | 7f3e726d0ca52b9f3866caabbec8fd10b58154a6 (diff) | |
download | uClibc-alpine-ba82591be10020612165702d4ce64b44edbef034.tar.bz2 uClibc-alpine-ba82591be10020612165702d4ce64b44edbef034.tar.xz |
syscall: unify part 2: NCS variety
Declare common NCS (non-constant syscall) variants and convert the existing
ports over to this.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Diffstat (limited to 'libc/sysdeps/linux/common/bits/syscalls-common.h')
-rw-r--r-- | libc/sysdeps/linux/common/bits/syscalls-common.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/common/bits/syscalls-common.h b/libc/sysdeps/linux/common/bits/syscalls-common.h index 81c82c801..2aef89c6e 100644 --- a/libc/sysdeps/linux/common/bits/syscalls-common.h +++ b/libc/sysdeps/linux/common/bits/syscalls-common.h @@ -31,10 +31,15 @@ /* Define a macro which expands into the inline wrapper code for a system call */ #ifndef INLINE_SYSCALL -# define INLINE_SYSCALL(name, nr, args...) \ +# define INLINE_SYSCALL(name, nr, args...) INLINE_SYSCALL_NCS(__NR_##name, nr, args) +#endif + +/* Just like INLINE_SYSCALL(), but take a non-constant syscall (NCS) argument */ +#ifndef INLINE_SYSCALL_NCS +# define INLINE_SYSCALL_NCS(name, nr, args...) \ ({ \ INTERNAL_SYSCALL_DECL(err); \ - long res = INTERNAL_SYSCALL(name, err, nr, args); \ + long res = INTERNAL_SYSCALL_NCS(name, err, nr, args); \ if (unlikely(INTERNAL_SYSCALL_ERROR_P(res, err))) { \ __set_errno(INTERNAL_SYSCALL_ERRNO(res, err)); \ res = -1L; \ @@ -43,6 +48,15 @@ }) #endif +/* No point in forcing people to implement both when they only need one */ +#ifndef INTERNAL_SYSCALL +# define INTERNAL_SYSCALL(name, err, nr, args...) INTERNAL_SYSCALL_NCS(__NR_##name, err, nr, args) +#endif + +#ifndef INTERNAL_SYSCALL_NCS +# error your port needs to define INTERNAL_SYSCALL_NCS in bits/syscalls.h +#endif + #ifndef _syscall0 #define C_DECL_ARGS_0() void |