diff options
Diffstat (limited to 'sys/src/internal.h')
-rw-r--r-- | sys/src/internal.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/src/internal.h b/sys/src/internal.h new file mode 100644 index 0000000..2bb1422 --- /dev/null +++ b/sys/src/internal.h @@ -0,0 +1,21 @@ +#pragma once + +#include <u.h> +#include <internal/syscall.h> + +#define syscall1(n,a1) _syscall1(n,sysarg(a1)) +#define syscall2(n,a1,a2) _syscall2(n,sysarg(a1),sysarg(a2)) +#define syscall3(n,a1,a2,a3) _syscall3(n,sysarg(a1),sysarg(a2),sysarg(a3)) +#define syscall4(n,a1,a2,a3,a4) _syscall4(n,sysarg(a1),sysarg(a2),sysarg(a3),sysarg(a4)) +#define syscall5(n,a1,a2,a3,a4,a5) _syscall5(n,sysarg(a1),sysarg(a2),sysarg(a3),sysarg(a4),sysarg(a5)) +#define syscall6(n,a1,a2,a3,a4,a5,a6) _syscall6(n,sysarg(a1),sysarg(a2),sysarg(a3),sysarg(a4),sysarg(a5),sysarg(a6)) +#define syscall7(n,a1,a2,a3,a4,a5,a6,a7) _syscall7(n,sysarg(a1),sysarg(a2),sysarg(a3),sysarg(a4),sysarg(a5),sysarg(a6),sysarg(a7)) + +#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n +#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,) +#define __SYSCALL_CONCAT_X(a,b) a##b +#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b) +#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) + +#define syscall(...) __SYSCALL_DISP(syscall,__VA_ARGS__) + |