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
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
|
#define ·RestartSysCall 0
#define ·Exit 1
#define ·Fork 2
#define ·Read 3
#define ·Write 4
#define ·Open 5
#define ·Close 6
#define ·Create 8
#define ·Link 9
#define ·Unlink 10
#define ·ExecVe 11
#define ·Chdir 12
#define ·MkNod 14
#define ·Chmod 15
#define ·LChown 16
#define ·LSeek 19
#define ·GetPid 20
#define ·Mount 21
#define ·SetUid 23
#define ·GetUid 24
#define ·PTrace 26
#define ·Pause 29
#define ·Access 33
#define ·Nice 34
#define ·Sync 36
#define ·Kill 37
#define ·Rename 38
#define ·Mkdir 39
#define ·Rmdir 40
#define ·Dup 41
#define ·Pipe 42
#define ·Times 43
#define ·Brk 45
#define ·SetGid 46
#define ·GetGid 47
#define ·GetEUid 49
#define ·GetEGid 50
#define ·Acct 51
#define ·UMount2 52
#define ·IoCtl 54
#define ·FCntl 55
#define ·SetPGid 57
#define ·UMask 60
#define ·Chroot 61
#define ·UStat 62
#define ·Dup2 63
#define ·GetPPid 64
#define ·GetPGrp 65
#define ·SetSId 66
#define ·SigAction 67
#define ·SetReUid 70
#define ·SetReGid 71
#define ·SigSuspend 72
#define ·SigPending 73
#define ·SetHostname 74
#define ·SetRLimit 75
#define ·GetRUsage 77
#define ·GetTimeOfDayTime32 78
#define ·SetTimeOfDayTime32 79
#define ·GetGroups 80
#define ·SetGroups 81
#define ·SymLink 83
#define ·ReadLink 85
#define ·UseLib 86
#define ·SwapOn 87
#define ·Reboot 88
#define ·MUnmap 91
#define ·Truncate 92
#define ·FTruncate 93
#define ·FChmod 94
#define ·FChown 95
#define ·GetPriority 96
#define ·SetPriority 97
#define ·StatFs 99
#define ·FStatFs 100
#define ·SysLog 103
#define ·SetITimer 104
#define ·GetITimer 105
#define ·Stat 106
#define ·LStat 107
#define ·FStat 108
#define ·VHangUp 111
#define ·Wait4 114
#define ·SwapOff 115
#define ·SysInfo 116
#define ·FSync 118
#define ·SigReturn 119
#define ·Clone 120
#define ·SetDomainName 121
#define ·UName 122
#define ·AdjTimex 124
#define ·MProtect 125
#define ·SigProcMask 126
#define ·InItModule 128
#define ·DeleteModule 129
#define ·QuotaCtl 131
#define ·GetPGid 132
#define ·FChdir 133
#define ·BdFlush 134
#define ·SysFs 135
#define ·Personality 136
#define ·SetFsUid 138
#define ·SetFsGid 139
#define ·LlSeek 140
#define ·GetDents 141
#define ·NewSelect 142
#define ·FLock 143
#define ·MSync 144
#define ·ReadV 145
#define ·WriteV 146
#define ·GetsId 147
#define ·FdAtAsync 148
#define ·SysCtl 149
#define ·MLock 150
#define ·MUnlock 151
#define ·MLockAll 152
#define ·MUnlockAll 153
#define ·SchedSetParam 154
#define ·SchedGetParam 155
#define ·SchedSetScheduler 156
#define ·SchedGetScheduler 157
#define ·SchedYield 158
#define ·SchedGetPriorityMax 159
#define ·SchedGetPriorityMin 160
#define ·SchedRrGetInterval 161
#define ·NanoSleep 162
#define ·MRemap 163
#define ·SetResUid 164
#define ·GetResUid 165
#define ·Poll 168
#define ·NfsServCtl 169
#define ·SetResGid 170
#define ·GetResGid 171
#define ·PrCtl 172
#define ·RtSigReturn 173
#define ·RtSigAction 174
#define ·RtSigProcMask 175
#define ·RtSigPending 176
#define ·RtSigTimedWait 177
#define ·RtSigQueueInfo 178
#define ·RtSigSuspend 179
#define ·PRead64 180
#define ·PWrite64 181
#define ·Chown 182
#define ·GetCwd 183
#define ·CapGet 184
#define ·CapSet 185
#define ·SiGaltStack 186
#define ·SendFile 187
#define ·VFork 190
#define ·UGetRLimit 191
#define ·MMap2 192
#define ·Truncate64 193
#define ·FTruncate64 194
#define ·Stat64 195
#define ·LStat64 196
#define ·FStat64 197
#define ·LChown32 198
#define ·GetUid32 199
#define ·GetGid32 200
#define ·GetEUid32 201
#define ·GetEGid32 202
#define ·SetReUid32 203
#define ·SetReGid32 204
#define ·GetGroups32 205
#define ·SetGroups32 206
#define ·FChown32 207
#define ·SetResUid32 208
#define ·GetResUid32 209
#define ·SetResGid32 210
#define ·GetResGid32 211
#define ·Chown32 212
#define ·SetUid32 213
#define ·SetGid32 214
#define ·SetFsUid32 215
#define ·SetFsGid32 216
#define ·GetDents64 217
#define ·PivotRoot 218
#define ·MLoaded 219
#define ·MAdvise 220
#define ·FCntl64 221
#define ·GetTId 224
#define ·ReadAhead 225
#define ·SetXAttr 226
#define ·LSetXAttr 227
#define ·FSetXAttr 228
#define ·GetXAttr 229
#define ·LGetXAttr 230
#define ·FGetXAttr 231
#define ·ListXAttr 232
#define ·LListXAttr 233
#define ·FListXAttr 234
#define ·RemoveXAttr 235
#define ·LRemoveXAttr 236
#define ·FRemoveXAttr 237
#define ·TKill 238
#define ·SendFile64 239
#define ·Futex 240
#define ·SchedSetAffinity 241
#define ·SchedGetAffinity 242
#define ·IoSetUp 243
#define ·IoDestroy 244
#define ·IoGetEvents 245
#define ·IoSubmit 246
#define ·IoCancel 247
#define ·ExitGroup 248
#define ·LookupDCookie 249
#define ·EPollCreate 250
#define ·EPollCtl 251
#define ·EPollWait 252
#define ·RemapFilePages 253
#define ·SetTIdAddress 256
#define ·TimerCreate 257
#define ·TimerSetTime32 258
#define ·TimerGetTime32 259
#define ·TimerGetOverrun 260
#define ·TimerDelete 261
#define ·ClockSetTime32 262
#define ·ClockGetTime32 263
#define ·ClockGetResTime32 264
#define ·ClockNanoSleepTime32 265
#define ·StatFs64 266
#define ·FStatFs64 267
#define ·TgKill 268
#define ·UTimes 269
#define ·FAdvise6464 270
#define ·ArmFAdvise6464 270
#define ·PciConfigIoBase 271
#define ·PciConfigRead 272
#define ·PciConfigWrite 273
#define ·MQOpen 274
#define ·MQUnlink 275
#define ·MQTimedSend 276
#define ·MQTimedReceive 277
#define ·MQNotify 278
#define ·MQGetSetAttr 279
#define ·WaitId 280
#define ·Socket 281
#define ·Bind 282
#define ·Connect 283
#define ·Listen 284
#define ·Accept 285
#define ·GetSockName 286
#define ·GetPeerName 287
#define ·SocketPair 288
#define ·Send 289
#define ·SendTo 290
#define ·Recv 291
#define ·RecvFrom 292
#define ·Shutdown 293
#define ·SetSockOpt 294
#define ·GetSockOpt 295
#define ·SendMsg 296
#define ·RecvMsg 297
#define ·SemOp 298
#define ·SemGet 299
#define ·SemCtl 300
#define ·MsgSend 301
#define ·MsgRecv 302
#define ·MsgGet 303
#define ·MsgCtl 304
#define ·ShmAt 305
#define ·ShmDt 306
#define ·ShmGet 307
#define ·ShmCtl 308
#define ·AddKey 309
#define ·RequestKey 310
#define ·KeyCtl 311
#define ·SemTimeDop 312
#define ·VServer 313
#define ·IoPrIoSet 314
#define ·IoPrIoGet 315
#define ·INotifyInIt 316
#define ·INotifyAddWatch 317
#define ·INotifyRmWatch 318
#define ·MBind 319
#define ·GetMemPolicy 320
#define ·SetMemPolicy 321
#define ·OpenAt 322
#define ·MkdirAt 323
#define ·MkNodAt 324
#define ·FChownAt 325
#define ·FuTimesAt 326
#define ·FStatAt64 327
#define ·UnlinkAt 328
#define ·RenameAt 329
#define ·LinkAt 330
#define ·SymLinkAt 331
#define ·ReadLinkAt 332
#define ·FChmodAt 333
#define ·FAccessAt 334
#define ·PSelect6 335
#define ·PPoll 336
#define ·UnShare 337
#define ·SetRobustList 338
#define ·GetRobustList 339
#define ·Splice 340
#define ·SyncFileRange2 341
#define ·ArmSyncFileRange 341
#define ·Tee 342
#define ·VmSplice 343
#define ·MovePages 344
#define ·GetCpu 345
#define ·EPollPWait 346
#define ·KExecLoad 347
#define ·UTimeNsAt 348
#define ·SignalFd 349
#define ·TimerFdCreate 350
#define ·EventFd 351
#define ·FAllocate 352
#define ·TimerFdSetTime32 353
#define ·TimerFdGetTime32 354
#define ·SignalFd4 355
#define ·EventFd2 356
#define ·EPollCreate1 357
#define ·Dup3 358
#define ·Pipe2 359
#define ·INotifyInIt1 360
#define ·PreAdv 361
#define ·PWriteV 362
#define ·RtTgSigQueueInfo 363
#define ·PerFEventOpen 364
#define ·RecvMMsg 365
#define ·Accept4 366
#define ·FaNotifyInIt 367
#define ·FaNotifyMark 368
#define ·PrLimit64 369
#define ·NameToHandleAt 370
#define ·OpenByHandleAt 371
#define ·ClockAdjTime 372
#define ·SyncFs 373
#define ·SendMMsg 374
#define ·SetNs 375
#define ·ProcessVmReadV 376
#define ·ProcessVmWriteV 377
#define ·KCmp 378
#define ·FinItModule 379
#define ·SchedSetAttr 380
#define ·SchedGetAttr 381
#define ·RenameAt2 382
#define ·SeccoMp 383
#define ·GetRandom 384
#define ·MemFdCreate 385
#define ·BpF 386
#define ·ExecVeAt 387
#define ·UserFaultFd 388
#define ·MemBarrier 389
#define ·MLock2 390
#define ·CopyFileRange 391
#define ·PreAdv2 392
#define ·PWriteV2 393
#define ·PKeyMProtect 394
#define ·PKeyAllOc 395
#define ·PKeyFree 396
#define ·StatX 397
#define ·RSeq 398
#define ·IoPGetEvents 399
#define ·MigratePages 400
#define ·KExecFileLoad 401
#define ·ClockGetTime64 403
#define ·ClockSetTime64 404
#define ·ClockAdjTime64 405
#define ·ClockGetResTime64 406
#define ·ClockNanoSleepTime64 407
#define ·TimerGetTime64 408
#define ·TimerSetTime64 409
#define ·TimerFdGetTime64 410
#define ·TimerFdSetTime64 411
#define ·UTimeNsAtTime64 412
#define ·PSelect6Time64 413
#define ·PPollTime64 414
#define ·IoPGetEventsTime64 416
#define ·RecvMMsgTime64 417
#define ·MQTimedSendTime64 418
#define ·MQTimedReceiveTime64 419
#define ·SemTimeDopTime64 420
#define ·RtSigTimedWaitTime64 421
#define ·FutexTime64 422
#define ·SchedRrGetIntervalTime64 423
#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__
#ifdef __thumb__
#define __ASM____R7__
#define __asm_syscall(...) do { \
asm( "mov %1,r7 ; mov r7,%2 ; svc 0 ; mov r7,%1" \
: "=r"(r0), "=&r"((int){0}) : __VA_ARGS__ : "memory"); \
return r0; \
} while (0)
#else
#define __ASM____R7__ __asm__("r7")
#define __asm_syscall(...) do { \
asm( "svc 0" \
: "=r"(r0) : __VA_ARGS__ : "memory"); \
return r0; \
} while (0)
#endif
#ifdef __thumb2__
#define R7_OPERAND "rI"(r7)
#else
#define R7_OPERAND "r"(r7)
#endif
static inline
long _syscall0(long n)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0");
__asm_syscall(R7_OPERAND);
}
static inline
long _syscall1(long n, long a)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
__asm_syscall(R7_OPERAND, "0"(r0));
}
static inline
long _syscall2(long n, long a, long b)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
register long r1 __asm__("r1") = b;
__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1));
}
static inline
long _syscall3(long n, long a, long b, long c)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
register long r1 __asm__("r1") = b;
register long r2 __asm__("r2") = c;
__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2));
}
static inline
long _syscall4(long n, long a, long b, long c, long d)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
register long r1 __asm__("r1") = b;
register long r2 __asm__("r2") = c;
register long r3 __asm__("r3") = d;
__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3));
}
static inline
long _syscall5(long n, long a, long b, long c, long d, long e)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
register long r1 __asm__("r1") = b;
register long r2 __asm__("r2") = c;
register long r3 __asm__("r3") = d;
register long r4 __asm__("r4") = e;
__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
}
static inline
long _syscall6(long n, long a, long b, long c, long d, long e, long f)
{
register long r7 __ASM____R7__ = n;
register long r0 __asm__("r0") = a;
register long r1 __asm__("r1") = b;
register long r2 __asm__("r2") = c;
register long r3 __asm__("r3") = d;
register long r4 __asm__("r4") = e;
register long r5 __asm__("r5") = f;
__asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
}
|