1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
#ifndef _SYS_SYSCALL_H
#define _SYS_SYSCALL_H
#include <stddef.h>
#define SYSCALL0(NUM) ({ \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL1(NUM, ARG0) ({ \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL2(NUM, ARG0, ARG1) ({ \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL3(NUM, ARG0, ARG1, ARG2) ({ \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL4(NUM, ARG0, ARG1, ARG2, ARG3) ({ \
register __typeof(ARG3) arg_r12 asm("r12") = ARG3; \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2), \
"r"(arg_r12) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL5(NUM, ARG0, ARG1, ARG2, ARG3, ARG4) ({ \
register __typeof(ARG3) arg_r12 asm("r12") = ARG3; \
register __typeof(ARG4) arg_r8 asm("r8") = ARG4; \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2), \
"r"(arg_r12), "r"(arg_r8) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL6(NUM, ARG0, ARG1, ARG2, ARG3, ARG4, ARG5) ({ \
register __typeof(ARG3) arg_r12 asm("r12") = ARG3; \
register __typeof(ARG4) arg_r8 asm("r8") = ARG4; \
register __typeof(ARG5) arg_r9 asm("r9") = ARG5; \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2), \
"r"(arg_r12), "r"(arg_r8), "r"(arg_r9) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL6(NUM, ARG0, ARG1, ARG2, ARG3, ARG4, ARG5) ({ \
register __typeof(ARG3) arg_r12 asm("r12") = ARG3; \
register __typeof(ARG4) arg_r8 asm("r8") = ARG4; \
register __typeof(ARG5) arg_r9 asm("r9") = ARG5; \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2), \
"r"(arg_r12), "r"(arg_r8), "r"(arg_r9) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL7(NUM, ARG0, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6) ({ \
register __typeof(ARG3) arg_r12 asm("r12") = ARG3; \
register __typeof(ARG4) arg_r8 asm("r8") = ARG4; \
register __typeof(ARG5) arg_r9 asm("r9") = ARG5; \
register __typeof(ARG6) arg_r10 asm("r10") = ARG6; \
asm volatile ("syscall" \
: "=a"(ret), "=d"(errno) \
: "a"(NUM), "D"(ARG0), "S"(ARG1), "d"(ARG2), \
"r"(arg_r12), "r"(arg_r8), "r"(arg_r9), "r"(arg_r10) \
: "rcx", "r11", "memory"); \
})
#define SYSCALL_EXIT 0
#define SYSCALL_ARCH_PRCTL 1
#define SYSCALL_OPEN 2
#define SYSCALL_CLOSE 3
#define SYSCALL_READ 4
#define SYSCALL_WRITE 5
#define SYSCALL_SEEK 6
#define SYSCALL_MMAP 7
#define SYSCALL_MUNMAP 8
#define SYSCALL_GETPID 9
#define SYSCALL_GETPPID 10
#define SYSCALL_EXEC 11
#define SYSCALL_CLONE 12
#define SYSCALL_WAIT 13
#define SYSCALL_SOCKET 14
#define SYSCALL_SETHOSTNAME 15
#define SYSCALL_UNLINK 16
#define SYSCALL_STAT 17
#define SYSCALL_GETCWD 18
#define SYSCALL_CHDIR 19
#define SYSCALL_IOCTL 20
#define SYSCALL_SCHED_YIELD 21
#define SYSCALL_DELETE_TCLUSTER 22
#define SYSCALL_PIPE 23
#define SYSCALL_GETUID 24
#define SYSCALL_RENAME 25
#define SYSCALL_SYSCONF 26
#define SYSCALL_SPAWN 27
#define SYSCALL_GETTID 28
#define SYSCALL_MANAGE_TCLUSTER 29
#define SYSCALL_FCNTL 30
#define SYSCALL_EXIT_THREAD 31
#define SYSCALL_GETRANDOM 32
#define SYSCALL_MPROTECT 33
#define SYSCALL_SYNC 34
#define SYSCALL_SET_MAC_CAPABILITIES 35
#define SYSCALL_GET_MAC_CAPABILITIES 36
#define SYSCALL_ADD_MAC_PERMISSIONS 37
#define SYSCALL_SET_MAC_ENFORCEMENT 38
#define SYSCALL_MOUNT 39
#define SYSCALL_UMOUNT 40
#define SYSCALL_READLINK 41
#define SYSCALL_GETDENTS 42
#define SYSCALL_MAKENODE 43
#define SYSCALL_TRUNCATE 44
#define SYSCALL_BIND 45
#define SYSCALL_SYMLINK 46
#define SYSCALL_CONNECT 47
#define SYSCALL_OPENPTY 48
#define SYSCALL_FSYNC 49
#define SYSCALL_LINK 50
#define SYSCALL_PTRACE 51
#define SYSCALL_LISTEN 52
#define SYSCALL_ACCEPT 53
#define SYSCALL_GETRLIMIT 54
#define SYSCALL_SETRLIMIT 55
#define SYSCALL_ACCESS 56
#define SYSCALL_POLL 57
#define SYSCALL_GETEUID 58
#define SYSCALL_SETUIDS 59
#define SYSCALL_FCHMOD 60
#define SYSCALL_UMASK 61
#define SYSCALL_REBOOT 62
#define SYSCALL_FCHOWN 63
#define SYSCALL_PREAD 64
#define SYSCALL_PWRITE 65
#define SYSCALL_GETSOCKNAME 66
#define SYSCALL_GETPEERNAME 67
#define SYSCALL_SHUTDOWN 68
#define SYSCALL_FUTEX 69
#define SYSCALL_CLOCK 70
#define SYSCALL_CLOCK_NANOSLEEP 71
#define SYSCALL_GETRUSAGE 72
#define SYSCALL_RECVFROM 73
#define SYSCALL_SENDTO 74
#define SYSCALL_CONFIG_NETINTER 75
#define SYSCALL_UTIMES 76
#define SYSCALL_CREATE_TCLUSTER 77
#define SYSCALL_SWITCH_TCLUSTER 78
#define SYSCALL_ACTUALLY_KILL 79
#define SYSCALL_SIGNALPOST 80
#define SYSCALL_SEND_SIGNAL 81
#define SYSCALL_GETPRIO 82
#define SYSCALL_SETPRIO 83
#define SYSCALL_GETGID 84
#define SYSCALL_GETEGID 85
#define SYSCALL_SETGIDS 86
#define SYSCALL_GETGROUPS 87
#define SYSCALL_SETGROUPS 88
#define SYSCALL_TTYNAME 89
#define SYSCALL_FADVISE 90
#define SYSCALL_SHMAT 91
#define SYSCALL_SHMCTL 92
#define SYSCALL_SHMDT 93
#define SYSCALL_SHMGET 94
#define SYSCALL_GETSOCKOPT 95
#define SYSCALL_SETSOCKOPT 96
#define SYSCALL_GETTIDID 97
#define SYSCALL_SETTIDID 98
#endif // _SYS_SYSCALL_H
|