[PATCH 1/4] Add INTERNAL_SYSCALL_CALL
Florian Weimer
fw@deneb.enyo.de
Wed Sep 21 19:22:00 GMT 2016
* Adhemerval Zanella:
> On 20/09/2016 18:36, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> +#define __INTERNAL_SYSCALL0(name, err) \
>>> + INTERNAL_SYSCALL (name, err, 0)
>>> +#define __INTERNAL_SYSCALL1(name, err, a1) \
>>> + INTERNAL_SYSCALL (name, err, 1, a1)
>>> +#define __INTERNAL_SYSCALL2(name, err, a1, a2) \
>>> + INTERNAL_SYSCALL (name, err, 2, a1, a2)
>>> +#define __INTERNAL_SYSCALL3(name, err, a1, a2, a3) \
>>> + INTERNAL_SYSCALL (name, err, 3, a1, a2, a3)
>>> +#define __INTERNAL_SYSCALL4(name, err, a1, a2, a3, a4) \
>>> + INTERNAL_SYSCALL (name, err, 4, a1, a2, a3, a4)
>>> +#define __INTERNAL_SYSCALL5(name, err, a1, a2, a3, a4, a5) \
>>> + INTERNAL_SYSCALL (name, err, 5, a1, a2, a3, a4, a5)
>>> +#define __INTERNAL_SYSCALL6(name, err, a1, a2, a3, a4, a5, a6) \
>>> + INTERNAL_SYSCALL (name, err, 6, a1, a2, a3, a4, a5, a6)
>>> +#define __INTERNAL_SYSCALL7(name, err, a1, a2, a3, a4, a5, a6, a7) \
>>> + INTERNAL_SYSCALL (name, err, 7, a1, a2, a3, a4, a5, a6, a7)
>>
>> It's not immediately obvious why these definitions are needed.
>
> I agree this is not obvious, but it follows the SYSCALL_CANCEL macro logic
> where __INTERNAL_SYSCALL_DISP will select the correct __INTERNAL_SYSCALL
> (based on number of arguments).
Is there anything that overrides inidivdual __INTERNAL_SYSCALLx
macros?
What I mean is this: Why can't this
+#define __INTERNAL_SYSCALL_DISP(b,err,...) \
+ __INTERNAL_SYSCALL_CONCAT (b, __SYSCALL_NARGS (__VA_ARGS__)) \
+ (err, __VA_ARGS__)
turn into
+#define __INTERNAL_SYSCALL_DISP(b,err,...) \
+ INTERNAL_SYSCALL (b, err, __SYSCALL_NARGS (__VA_ARGS__), __VA_ARGS__)
?
More information about the Libc-alpha
mailing list