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
497
498
499
500
501
502
503
504
505
|
#define ·RestartSysCall 0
#define ·Exit 1
#define ·Fork 2
#define ·Read 3
#define ·Write 4
#define ·Open 5
#define ·Close 6
#define ·WaitPid 7
#define ·Create 8
#define ·Link 9
#define ·Unlink 10
#define ·ExecVe 11
#define ·Chdir 12
#define ·Time 13
#define ·MkNod 14
#define ·Chmod 15
#define ·LChown 16
#define ·Break 17
#define ·OldStat 18
#define ·LSeek 19
#define ·GetPid 20
#define ·Mount 21
#define ·UMount 22
#define ·SetUid 23
#define ·GetUid 24
#define ·STime 25
#define ·PTrace 26
#define ·Alarm 27
#define ·OldFStat 28
#define ·Pause 29
#define ·UTime 30
#define ·STty 31
#define ·GTty 32
#define ·Access 33
#define ·Nice 34
#define ·FTime 35
#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 ·Prof 44
#define ·Brk 45
#define ·SetGid 46
#define ·GetGid 47
#define ·Signal 48
#define ·GetEUid 49
#define ·GetEGid 50
#define ·Acct 51
#define ·UMount2 52
#define ·Lock 53
#define ·IoCtl 54
#define ·FCntl 55
#define ·MPx 56
#define ·SetPGid 57
#define ·ULimit 58
#define ·OldOldUName 59
#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 ·SGetMask 68
#define ·SSetMask 69
#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 ·Select 82
#define ·SymLink 83
#define ·OldLStat 84
#define ·ReadLink 85
#define ·UseLib 86
#define ·SwapOn 87
#define ·Reboot 88
#define ·ReadDir 89
#define ·MMap 90
#define ·MUnmap 91
#define ·Truncate 92
#define ·FTruncate 93
#define ·FChmod 94
#define ·FChown 95
#define ·GetPriority 96
#define ·SetPriority 97
#define ·ProfIl 98
#define ·StatFs 99
#define ·FStatFs 100
#define ·IoPerm 101
#define ·SocketCall 102
#define ·SysLog 103
#define ·SetITimer 104
#define ·GetITimer 105
#define ·Stat 106
#define ·LStat 107
#define ·FStat 108
#define ·OldUName 109
#define ·IoPl 110
#define ·VHangUp 111
#define ·Idle 112
#define ·Vm86Old 113
#define ·Wait4 114
#define ·SwapOff 115
#define ·SysInfo 116
#define ·Ipc 117
#define ·FSync 118
#define ·SigReturn 119
#define ·Clone 120
#define ·SetDomainName 121
#define ·UName 122
#define ·ModifyLdT 123
#define ·AdjTimex 124
#define ·MProtect 125
#define ·SigProcMask 126
#define ·CreateModule 127
#define ·InItModule 128
#define ·DeleteModule 129
#define ·GetKernelSyms 130
#define ·QuotaCtl 131
#define ·GetPGid 132
#define ·FChdir 133
#define ·BdFlush 134
#define ·SysFs 135
#define ·Personality 136
#define ·AFsSysCall 137
#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 ·Vm86 166
#define ·QueryModule 167
#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 ·GetPMsg 188
#define ·PutPMsg 189
#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 ·PivotRoot 217
#define ·MLoaded 218
#define ·MAdvise 219
#define ·GetDents64 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 ·SetThreadArea 243
#define ·GetThreadArea 244
#define ·IoSetUp 245
#define ·IoDestroy 246
#define ·IoGetEvents 247
#define ·IoSubmit 248
#define ·IoCancel 249
#define ·FAdvise64 250
#define ·ExitGroup 252
#define ·LookupDCookie 253
#define ·EPollCreate 254
#define ·EPollCtl 255
#define ·EPollWait 256
#define ·RemapFilePages 257
#define ·SetTIdAddress 258
#define ·TimerCreate 259
#define ·StatFs64 268
#define ·FStatFs64 269
#define ·TgKill 270
#define ·UTimes 271
#define ·FAdvise6464 272
#define ·VServer 273
#define ·MBind 274
#define ·GetMemPolicy 275
#define ·SetMemPolicy 276
#define ·MQOpen 277
#define ·KExecLoad 283
#define ·WaitId 284
#define ·AddKey 286
#define ·RequestKey 287
#define ·KeyCtl 288
#define ·IoPrIoSet 289
#define ·IoPrIoGet 290
#define ·INotifyInIt 291
#define ·INotifyAddWatch 292
#define ·INotifyRmWatch 293
#define ·MigratePages 294
#define ·OpenAt 295
#define ·MkdirAt 296
#define ·MkNodAt 297
#define ·FChownAt 298
#define ·FuTimesAt 299
#define ·FStatAt64 300
#define ·UnlinkAt 301
#define ·RenameAt 302
#define ·LinkAt 303
#define ·SymLinkAt 304
#define ·ReadLinkAt 305
#define ·FChmodAt 306
#define ·FAccessAt 307
#define ·PSelect6 308
#define ·PPoll 309
#define ·UnShare 310
#define ·SetRobustList 311
#define ·GetRobustList 312
#define ·Splice 313
#define ·SyncFileRange 314
#define ·Tee 315
#define ·VmSplice 316
#define ·MovePages 317
#define ·GetCpu 318
#define ·EPollPWait 319
#define ·UTimeNsAt 320
#define ·SignalFd 321
#define ·TimerFdCreate 322
#define ·EventFd 323
#define ·FAllocate 324
#define ·TimerFdSetTime32 325
#define ·TimerFdGetTime32 326
#define ·SignalFd4 327
#define ·EventFd2 328
#define ·EPollCreate1 329
#define ·Dup3 330
#define ·Pipe2 331
#define ·INotifyInIt1 332
#define ·PreAdv 333
#define ·PWriteV 334
#define ·RtTgSigQueueInfo 335
#define ·PerFEventOpen 336
#define ·RecvMMsg 337
#define ·FaNotifyInIt 338
#define ·FaNotifyMark 339
#define ·PrLimit64 340
#define ·NameToHandleAt 341
#define ·OpenByHandleAt 342
#define ·ClockAdjTime 343
#define ·SyncFs 344
#define ·SendMMsg 345
#define ·SetNs 346
#define ·ProcessVmReadV 347
#define ·ProcessVmWriteV 348
#define ·KCmp 349
#define ·FinItModule 350
#define ·SchedSetAttr 351
#define ·SchedGetAttr 352
#define ·RenameAt2 353
#define ·SeccoMp 354
#define ·GetRandom 355
#define ·MemFdCreate 356
#define ·BpF 357
#define ·ExecVeAt 358
#define ·Socket 359
#define ·SocketPair 360
#define ·Bind 361
#define ·Connect 362
#define ·Listen 363
#define ·Accept4 364
#define ·GetSockOpt 365
#define ·SetSockOpt 366
#define ·GetSockName 367
#define ·GetPeerName 368
#define ·SendTo 369
#define ·SendMsg 370
#define ·RecvFrom 371
#define ·RecvMsg 372
#define ·Shutdown 373
#define ·UserFaultFd 374
#define ·MemBarrier 375
#define ·MLock2 376
#define ·CopyFileRange 377
#define ·PreAdv2 378
#define ·PWriteV2 379
#define ·PKeyMProtect 380
#define ·PKeyAllOc 381
#define ·PKeyFree 382
#define ·StatX 383
#define ·ArchPrCtl 384
#define ·IoPGetEvents 385
#define ·RSeq 386
#define ·SemGet 393
#define ·SemCtl 394
#define ·ShmGet 395
#define ·ShmCtl 396
#define ·ShmAt 397
#define ·ShmDt 398
#define ·MsgGet 399
#define ·MsgSend 400
#define ·MsgRecv 401
#define ·MsgCtl 402
#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__
#if SYSCALL_NO_TLS
#define SYSCALL_INSNS "int $128"
#else
#define SYSCALL_INSNS "call *%%gs:16"
#endif
#define SYSCALL_INSNS_12 "xchg %%ebx,%%edx ; " SYSCALL_INSNS " ; xchg %%ebx,%%edx"
#define SYSCALL_INSNS_34 "xchg %%ebx,%%edi ; " SYSCALL_INSNS " ; xchg %%ebx,%%edi"
static inline
long _syscall0(long n)
{
ulong __ret;
asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n) : "memory");
return __ret;
}
static inline
long _syscall1(long n, long a1)
{
ulong __ret;
asm(SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1) : "memory");
return __ret;
}
static inline
long _syscall2(long n, long a1, long a2)
{
ulong __ret;
asm(SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2) : "memory");
return __ret;
}
static inline
long _syscall3(long n, long a1, long a2, long a3)
{
ulong __ret;
#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM)
asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3) : "memory");
#else
asm(SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3) : "memory");
#endif
return __ret;
}
static inline
long _syscall4(long n, long a1, long a2, long a3, long a4)
{
ulong __ret;
#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM)
asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory");
#else
asm(SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory");
#endif
return __ret;
}
static inline
long _syscall5(long n, long a1, long a2, long a3, long a4, long a5)
{
ulong __ret;
#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM)
asm(SYSCALL_INSNS
: "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory");
#else
asm("pushl %2 ; push %%ebx ; mov 4(%%esp),%%ebx ; " SYSCALL_INSNS " ; pop %%ebx ; add $4,%%esp"
: "=a"(__ret) : "a"(n), "g"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory");
#endif
return __ret;
}
static inline
long _syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
{
ulong __ret;
#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM)
asm("pushl %7 ; push %%ebp ; mov 4(%%esp),%%ebp ; " SYSCALL_INSNS " ; pop %%ebp ; add $4,%%esp"
: "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "g"(a6) : "memory");
#else
ulong a1a6[2] = { a1, a6 };
asm("pushl %1 ; push %%ebx ; push %%ebp ; mov 8(%%esp),%%ebx ; mov 4(%%ebx),%%ebp ; mov (%%ebx),%%ebx ; " SYSCALL_INSNS " ; pop %%ebp ; pop %%ebx ; add $4,%%esp"
: "=a"(__ret) : "g"(&a1a6), "a"(n), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory");
#endif
return __ret;
}
|