aboutsummaryrefslogtreecommitdiff
path: root/sys/linux/i386/syscall.h
blob: 21894bf75a99aaa41e7cdd6588c191811ba238f2 (plain)
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;
}