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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
|
#define ·IoSetUp 0
#define ·IoDestroy 1
#define ·IoSubmit 2
#define ·IoCancel 3
#define ·IoGetEvents 4
#define ·SetXAttr 5
#define ·LSetXAttr 6
#define ·FSetXAttr 7
#define ·GetXAttr 8
#define ·LGetXAttr 9
#define ·FGetXAttr 10
#define ·ListXAttr 11
#define ·LListXAttr 12
#define ·FListXAttr 13
#define ·RemoveXAttr 14
#define ·LRemoveXAttr 15
#define ·FRemoveXAttr 16
#define ·GetCwd 17
#define ·LookupDCookie 18
#define ·EventFd2 19
#define ·EPollCreate1 20
#define ·EPollCtl 21
#define ·EPollPWait 22
#define ·Dup 23
#define ·Dup3 24
#define ·FCntl 25
#define ·INotifyInIt1 26
#define ·INotifyAddWatch 27
#define ·INotifyRmWatch 28
#define ·IoCtl 29
#define ·IoPrIoSet 30
#define ·IoPrIoGet 31
#define ·FLock 32
#define ·MkNodAt 33
#define ·MkdirAt 34
#define ·UnlinkAt 35
#define ·SymLinkAt 36
#define ·LinkAt 37
#define ·UMount2 39
#define ·Mount 40
#define ·PivotRoot 41
#define ·NfsServCtl 42
#define ·StatFs 43
#define ·FStatFs 44
#define ·Truncate 45
#define ·FTruncate 46
#define ·FAllocate 47
#define ·FAccessAt 48
#define ·Chdir 49
#define ·FChdir 50
#define ·Chroot 51
#define ·FChmod 52
#define ·FChmodAt 53
#define ·FChownAt 54
#define ·FChown 55
#define ·OpenAt 56
#define ·Close 57
#define ·VHangUp 58
#define ·Pipe2 59
#define ·QuotaCtl 60
#define ·GetDents64 61
#define ·LSeek 62
#define ·Read 63
#define ·Write 64
#define ·ReadV 65
#define ·WriteV 66
#define ·PRead64 67
#define ·PWrite64 68
#define ·PreAdv 69
#define ·PWriteV 70
#define ·SendFile 71
#define ·PSelect6 72
#define ·PPoll 73
#define ·SignalFd4 74
#define ·VmSplice 75
#define ·Splice 76
#define ·Tee 77
#define ·ReadLinkAt 78
#define ·FStatAt 79
#define ·FStat 80
#define ·Sync 81
#define ·FSync 82
#define ·FdAtAsync 83
#define ·SyncFileRange 84
#define ·TimerFdCreate 85
#define ·TimerFdSetTime 86
#define ·TimerFdGetTime 87
#define ·UTimeNsAt 88
#define ·Acct 89
#define ·CapGet 90
#define ·CapSet 91
#define ·Personality 92
#define ·Exit 93
#define ·ExitGroup 94
#define ·WaitId 95
#define ·SetTIdAddress 96
#define ·UnShare 97
#define ·Futex 98
#define ·SetRobustList 99
#define ·GetRobustList 100
#define ·NanoSleep 101
#define ·GetITimer 102
#define ·SetITimer 103
#define ·KExecLoad 104
#define ·InItModule 105
#define ·DeleteModule 106
#define ·TimerCreate 107
#define ·TimerGetTime 108
#define ·TimerGetOverrun 109
#define ·TimerSetTime 110
#define ·TimerDelete 111
#define ·ClockSetTime 112
#define ·ClockGetTime 113
#define ·ClockGetRes 114
#define ·ClockNanoSleep 115
#define ·SysLog 116
#define ·PTrace 117
#define ·SchedSetParam 118
#define ·SchedSetScheduler 119
#define ·SchedGetScheduler 120
#define ·SchedGetParam 121
#define ·SchedSetAffinity 122
#define ·SchedGetAffinity 123
#define ·SchedYield 124
#define ·SchedGetPriorityMax 125
#define ·SchedGetPriorityMin 126
#define ·SchedRrGetInterval 127
#define ·RestartSysCall 128
#define ·Kill 129
#define ·TKill 130
#define ·TgKill 131
#define ·SiGaltStack 132
#define ·RtSigSuspend 133
#define ·RtSigAction 134
#define ·RtSigProcMask 135
#define ·RtSigPending 136
#define ·RtSigTimedWait 137
#define ·RtSigQueueInfo 138
#define ·RtSigReturn 139
#define ·SetPriority 140
#define ·GetPriority 141
#define ·Reboot 142
#define ·SetReGid 143
#define ·SetGid 144
#define ·SetReUid 145
#define ·SetUid 146
#define ·SetResUid 147
#define ·GetResUid 148
#define ·SetResGid 149
#define ·GetResGid 150
#define ·SetFsUid 151
#define ·SetFsGid 152
#define ·Times 153
#define ·SetPGid 154
#define ·GetPGid 155
#define ·GetsId 156
#define ·SetSId 157
#define ·GetGroups 158
#define ·SetGroups 159
#define ·UName 160
#define ·SetHostname 161
#define ·SetDomainName 162
#define ·GetRLimit 163
#define ·SetRLimit 164
#define ·GetRUsage 165
#define ·UMask 166
#define ·PrCtl 167
#define ·GetCpu 168
#define ·GetTimeOfDay 169
#define ·SetTimeOfDay 170
#define ·AdjTimex 171
#define ·GetPid 172
#define ·GetPPid 173
#define ·GetUid 174
#define ·GetEUid 175
#define ·GetGid 176
#define ·GetEGid 177
#define ·GetTId 178
#define ·SysInfo 179
#define ·MQOpen 180
#define ·MQUnlink 181
#define ·MQTimedSend 182
#define ·MQTimedReceive 183
#define ·MQNotify 184
#define ·MQGetSetAttr 185
#define ·MsgGet 186
#define ·MsgCtl 187
#define ·MsgRecv 188
#define ·MsgSend 189
#define ·SemGet 190
#define ·SemCtl 191
#define ·SemTimeDop 192
#define ·SemOp 193
#define ·ShmGet 194
#define ·ShmCtl 195
#define ·ShmAt 196
#define ·ShmDt 197
#define ·Socket 198
#define ·SocketPair 199
#define ·Bind 200
#define ·Listen 201
#define ·Accept 202
#define ·Connect 203
#define ·GetSockName 204
#define ·GetPeerName 205
#define ·SendTo 206
#define ·RecvFrom 207
#define ·SetSockOpt 208
#define ·GetSockOpt 209
#define ·Shutdown 210
#define ·SendMsg 211
#define ·RecvMsg 212
#define ·ReadAhead 213
#define ·Brk 214
#define ·MUnmap 215
#define ·MRemap 216
#define ·AddKey 217
#define ·RequestKey 218
#define ·KeyCtl 219
#define ·Clone 220
#define ·ExecVe 221
#define ·MMap 222
#define ·FAdvise64 223
#define ·SwapOn 224
#define ·SwapOff 225
#define ·MProtect 226
#define ·MSync 227
#define ·MLock 228
#define ·MUnlock 229
#define ·MLockAll 230
#define ·MUnlockAll 231
#define ·MLoaded 232
#define ·MAdvise 233
#define ·RemapFilePages 234
#define ·MBind 235
#define ·GetMemPolicy 236
#define ·SetMemPolicy 237
#define ·MigratePages 238
#define ·MovePages 239
#define ·RtTgSigQueueInfo 240
#define ·PerFEventOpen 241
#define ·Accept4 242
#define ·RecvMMsg 243
#define ·ArchSpecificSysCall 244
#define ·Wait4 260
#define ·PrLimit64 261
#define ·FaNotifyInIt 262
#define ·FaNotifyMark 263
#define ·NameToHandleAt 264
#define ·OpenByHandleAt 265
#define ·ClockAdjTime 266
#define ·SyncFs 267
#define ·SetNs 268
#define ·SendMMsg 269
#define ·ProcessVmReadV 270
#define ·ProcessVmWriteV 271
#define ·KCmp 272
#define ·FinItModule 273
#define ·SchedSetAttr 274
#define ·SchedGetAttr 275
#define ·RenameAt2 276
#define ·SeccoMp 277
#define ·GetRandom 278
#define ·MemFdCreate 279
#define ·BpF 280
#define ·ExecVeAt 281
#define ·UserFaultFd 282
#define ·MemBarrier 283
#define ·MLock2 284
#define ·CopyFileRange 285
#define ·PreAdv2 286
#define ·PWriteV2 287
#define ·PKeyMProtect 288
#define ·PKeyAllOc 289
#define ·PKeyFree 290
#define ·StatX 291
#define ·IoPGetEvents 292
#define ·RSeq 293
#define ·KExecFileLoad 294
#define ·PidFdSendSignal 424
#define ·IoUringSetUp 425
#define ·IoUringEnter 426
#define ·IoUringRegister 427
#define ·OpenTree 428
#define ·MoveMount 429
#define ·FsOpen 430
#define ·FsConfig 431
#define ·FsMount 432
#define ·FsPick 433
#define ·PidFdOpen 434
#define ·Clone3 435
#define ·CloseRange 436
#define ·OpenAt2 437
#define ·PidFdGetFd 438
#define ·FAccessAt2 439
/* assembly routines */
#define asm __asm__ __volatile__
#define __asm_syscall(...) \
asm("ecall\n\t" \
: "=r"(a0) : __VA_ARGS__ : "memory"); \
return a0; \
static inline
long _syscall0(long n)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0");
__asm_syscall("r"(a7))
}
static inline
long _syscall1(long n, long a)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
__asm_syscall("r"(a7), "0"(a0))
}
static inline
long _syscall2(long n, long a, long b)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
__asm_syscall("r"(a7), "0"(a0), "r"(a1))
}
static inline
long _syscall3(long n, long a, long b, long c)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
register long a2 __asm__("a2") = c;
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2))
}
static inline
long _syscall4(long n, long a, long b, long c, long d)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
register long a2 __asm__("a2") = c;
register long a3 __asm__("a3") = d;
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3))
}
static inline
long _syscall5(long n, long a, long b, long c, long d, long e)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
register long a2 __asm__("a2") = c;
register long a3 __asm__("a3") = d;
register long a4 __asm__("a4") = e;
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4))
}
static inline
long _syscall6(long n, long a, long b, long c, long d, long e, long f)
{
register long a7 __asm__("a7") = n;
register long a0 __asm__("a0") = a;
register long a1 __asm__("a1") = b;
register long a2 __asm__("a2") = c;
register long a3 __asm__("a3") = d;
register long a4 __asm__("a4") = e;
register long a5 __asm__("a5") = f;
__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5))
}
|