aboutsummaryrefslogtreecommitdiff
path: root/sys/src/internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/internal.h')
-rw-r--r--sys/src/internal.h21
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__)
+