aboutsummaryrefslogtreecommitdiff
path: root/sys/src/internal.h
blob: 2bb14221296d50a47a029052eb53c9fbaf36880b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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__)