This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/4] Add INTERNAL_SYSCALL_CALL
* 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.
> +#define __INTERNAL_SYSCALL_NARGS_X(a, b, c, d, e, f, g, h, n, ...) n
> +#define __INTERNAL_SYSCALL_NARGS(...) \
> + __INTERNAL_SYSCALL_NARGS_X (__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0, )
> +#define __INTERNAL_SYSCALL_CONCAT_X(a, b) a##b
> +#define __INTERNAL_SYSCALL_CONCAT(a, b) __SYSCALL_CONCAT_X (a, b)
I think you can reuse the macros from sysdeps/unix/sysdep.h here.
> +/* Issue a syscall defined by syscall number plus any other argument required.
These comment lines are rather long.
> + Any error will be handled using arch defined macros and errno will be se
> + accordingly.
“will be set”