[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