aboutsummaryrefslogtreecommitdiff
path: root/sys/linux/amd64/syscall.h
blob: 4664504945b7d319ea23c21bd464140abf6fdffb (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
#define ·Read                          0
#define ·Write                         1
#define ·Open                          2
#define ·Close                         3
#define ·Stat                          4
#define ·FStat                         5
#define ·LStat                         6
#define ·Poll                          7
#define ·LSeek                         8
#define ·MMap                          9
#define ·MProtect                      10
#define ·MUnmap                        11
#define ·Brk                           12
#define ·RtSigAction                   13
#define ·RtSigProcMask                 14
#define ·RtSigReturn                   15
#define ·IoCtl                         16
#define ·PRead64                       17
#define ·PWrite64                      18
#define ·ReadV                         19
#define ·WriteV                        20
#define ·Access                        21
#define ·Pipe                          22
#define ·Select                        23
#define ·SchedYield                    24
#define ·MRemap                        25
#define ·MSync                         26
#define ·MLoaded                       27
#define ·MAdvise                       28
#define ·ShmGet                        29
#define ·ShmAt                         30
#define ·ShmCtl                        31
#define ·Dup                           32
#define ·Dup2                          33
#define ·Pause                         34
#define ·NanoSleep                     35
#define ·GetITimer                     36
#define ·Alarm                         37
#define ·SetITimer                     38
#define ·GetPid                        39
#define ·SendFile                      40
#define ·Socket                        41
#define ·Connect                       42
#define ·Accept                        43
#define ·SendTo                        44
#define ·RecvFrom                      45
#define ·SendMsg                       46
#define ·RecvMsg                       47
#define ·Shutdown                      48
#define ·Bind                          49
#define ·Listen                        50
#define ·GetSockName                   51
#define ·GetPeerName                   52
#define ·SocketPair                    53
#define ·SetSockOpt                    54
#define ·GetSockOpt                    55
#define ·Clone                         56
#define ·Fork                          57
#define ·VFork                         58
#define ·ExecVe                        59
#define ·Exit                          60
#define ·Wait4                         61
#define ·Kill                          62
#define ·UName                         63
#define ·SemGet                        64
#define ·SemOp                         65
#define ·SemCtl                        66
#define ·ShmDt                         67
#define ·MsgGet                        68
#define ·MsgSend                       69
#define ·MsgRecv                       70
#define ·MsgCtl                        71
#define ·FCntl                         72
#define ·FLock                         73
#define ·FSync                         74
#define ·FdAtAsync                     75
#define ·Truncate                      76
#define ·FTruncate                     77
#define ·GetDents                      78
#define ·GetCwd                        79
#define ·Chdir                         80
#define ·FChdir                        81
#define ·Rename                        82
#define ·Mkdir                         83
#define ·Rmdir                         84
#define ·Create                        85
#define ·Link                          86
#define ·Unlink                        87
#define ·SymLink                       88
#define ·ReadLink                      89
#define ·Chmod                         90
#define ·FChmod                        91
#define ·Chown                         92
#define ·FChown                        93
#define ·LChown                        94
#define ·UMask                         95
#define ·GetTimeOfDay                  96
#define ·GetRLimit                     97
#define ·GetRUsage                     98
#define ·SysInfo                       99
#define ·Times                         100
#define ·PTrace                        101
#define ·GetUid                        102
#define ·SysLog                        103
#define ·GetGid                        104
#define ·SetUid                        105
#define ·SetGid                        106
#define ·GetEUid                       107
#define ·GetEGid                       108
#define ·SetPGid                       109
#define ·GetPPid                       110
#define ·GetPGrp                       111
#define ·SetSId                        112
#define ·SetReUid                      113
#define ·SetReGid                      114
#define ·GetGroups                     115
#define ·SetGroups                     116
#define ·SetResUid                     117
#define ·GetResUid                     118
#define ·SetResGid                     119
#define ·GetResGid                     120
#define ·GetPGid                       121
#define ·SetFsUid                      122
#define ·SetFsGid                      123
#define ·GetsId                        124
#define ·CapGet                        125
#define ·CapSet                        126
#define ·RtSigPending                  127
#define ·RtSigTimedWait                128
#define ·RtSigQueueInfo                129
#define ·RtSigSuspend                  130
#define ·SiGaltStack                   131
#define ·UTime                         132
#define ·MkNod                         133
#define ·UseLib                        134
#define ·Personality                   135
#define ·UStat                         136
#define ·StatFs                        137
#define ·FStatFs                       138
#define ·SysFs                         139
#define ·GetPriority                   140
#define ·SetPriority                   141
#define ·SchedSetParam                 142
#define ·SchedGetParam                 143
#define ·SchedSetScheduler             144
#define ·SchedGetScheduler             145
#define ·SchedGetPriorityMax           146
#define ·SchedGetPriorityMin           147
#define ·SchedRrGetInterval            148
#define ·MLock                         149
#define ·MUnlock                       150
#define ·MLockAll                      151
#define ·MUnlockAll                    152
#define ·VHangUp                       153
#define ·ModifyLdT                     154
#define ·PivotRoot                     155
#define ·SysCtl                        156
#define ·PrCtl                         157
#define ·ArchPrCtl                     158
#define ·AdjTimex                      159
#define ·SetRLimit                     160
#define ·Chroot                        161
#define ·Sync                          162
#define ·Acct                          163
#define ·SetTimeOfDay                  164
#define ·Mount                         165
#define ·UMount2                       166
#define ·SwapOn                        167
#define ·SwapOff                       168
#define ·Reboot                        169
#define ·SetHostname                   170
#define ·SetDomainName                 171
#define ·IoPl                          172
#define ·IoPerm                        173
#define ·CreateModule                  174
#define ·InItModule                    175
#define ·DeleteModule                  176
#define ·GetKernelSyms                 177
#define ·QueryModule                   178
#define ·QuotaCtl                      179
#define ·NfsServCtl                    180
#define ·GetPMsg                       181
#define ·PutPMsg                       182
#define ·AFsSysCall                    183
#define ·TuxCall                       184
#define ·Security                      185
#define ·GetTId                        186
#define ·ReadAhead                     187
#define ·SetXAttr                      188
#define ·LSetXAttr                     189
#define ·FSetXAttr                     190
#define ·GetXAttr                      191
#define ·LGetXAttr                     192
#define ·FGetXAttr                     193
#define ·ListXAttr                     194
#define ·LListXAttr                    195
#define ·FListXAttr                    196
#define ·RemoveXAttr                   197
#define ·LRemoveXAttr                  198
#define ·FRemoveXAttr                  199
#define ·TKill                         200
#define ·Time                          201
#define ·Futex                         202
#define ·SchedSetAffinity              203
#define ·SchedGetAffinity              204
#define ·SetThreadArea                 205
#define ·IoSetUp                       206
#define ·IoDestroy                     207
#define ·IoGetEvents                   208
#define ·IoSubmit                      209
#define ·IoCancel                      210
#define ·GetThreadArea                 211
#define ·LookupDCookie                 212
#define ·EPollCreate                   213
#define ·EPollCtlOld                   214
#define ·EPollWaitOld                  215
#define ·RemapFilePages                216
#define ·GetDents64                    217
#define ·SetTIdAddress                 218
#define ·RestartSysCall                219
#define ·SemTimeDop                    220
#define ·FAdvise64                     221
#define ·TimerCreate                   222
#define ·TimerSetTime                  223
#define ·TimerGetTime                  224
#define ·TimerGetOverrun               225
#define ·TimerDelete                   226
#define ·ClockSetTime                  227
#define ·ClockGetTime                  228
#define ·ClockGetRes                   229
#define ·ClockNanoSleep                230
#define ·ExitGroup                     231
#define ·EPollWait                     232
#define ·EPollCtl                      233
#define ·TgKill                        234
#define ·UTimes                        235
#define ·VServer                       236
#define ·MBind                         237
#define ·SetMemPolicy                  238
#define ·GetMemPolicy                  239
#define ·MQOpen                        240
#define ·MQUnlink                      241
#define ·MQTimedSend                   242
#define ·MQTimedReceive                243
#define ·MQNotify                      244
#define ·MQGetSetAttr                  245
#define ·KExecLoad                     246
#define ·WaitId                        247
#define ·AddKey                        248
#define ·RequestKey                    249
#define ·KeyCtl                        250
#define ·IoPrIoSet                     251
#define ·IoPrIoGet                     252
#define ·INotifyInIt                   253
#define ·INotifyAddWatch               254
#define ·INotifyRmWatch                255
#define ·MigratePages                  256
#define ·OpenAt                        257
#define ·MkdirAt                       258
#define ·MkNodAt                       259
#define ·FChownAt                      260
#define ·FuTimesAt                     261
#define ·NewFStatAt                    262
#define ·UnlinkAt                      263
#define ·RenameAt                      264
#define ·LinkAt                        265
#define ·SymLinkAt                     266
#define ·ReadLinkAt                    267
#define ·FChmodAt                      268
#define ·FAccessAt                     269
#define ·PSelect6                      270
#define ·PPoll                         271
#define ·UnShare                       272
#define ·SetRobustList                 273
#define ·GetRobustList                 274
#define ·Splice                        275
#define ·Tee                           276
#define ·SyncFileRange                 277
#define ·VmSplice                      278
#define ·MovePages                     279
#define ·UTimeNsAt                     280
#define ·EPollPWait                    281
#define ·SignalFd                      282
#define ·TimerFdCreate                 283
#define ·EventFd                       284
#define ·FAllocate                     285
#define ·TimerFdSetTime                286
#define ·TimerFdGetTime                287
#define ·Accept4                       288
#define ·SignalFd4                     289
#define ·EventFd2                      290
#define ·EPollCreate1                  291
#define ·Dup3                          292
#define ·Pipe2                         293
#define ·INotifyInIt1                  294
#define ·PreAdv                        295
#define ·PWriteV                       296
#define ·RtTgSigQueueInfo              297
#define ·PerFEventOpen                 298
#define ·RecvMMsg                      299
#define ·FaNotifyInIt                  300
#define ·FaNotifyMark                  301
#define ·PrLimit64                     302
#define ·NameToHandleAt                303
#define ·OpenByHandleAt                304
#define ·ClockAdjTime                  305
#define ·SyncFs                        306
#define ·SendMMsg                      307
#define ·SetNs                         308
#define ·GetCpu                        309
#define ·ProcessVmReadV                310
#define ·ProcessVmWriteV               311
#define ·KCmp                          312
#define ·FinItModule                   313
#define ·SchedSetAttr                  314
#define ·SchedGetAttr                  315
#define ·RenameAt2                     316
#define ·SeccoMp                       317
#define ·GetRandom                     318
#define ·MemFdCreate                   319
#define ·KExecFileLoad                 320
#define ·BpF                           321
#define ·ExecVeAt                      322
#define ·UserFaultFd                   323
#define ·MemBarrier                    324
#define ·MLock2                        325
#define ·CopyFileRange                 326
#define ·PreAdv2                       327
#define ·PWriteV2                      328
#define ·PKeyMProtect                  329
#define ·PKeyAllOc                     330
#define ·PKeyFree                      331
#define ·StatX                         332
#define ·IoPGetEvents                  333
#define ·RSeq                          334
#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__

static inline
long _syscall0(long n)
{
    ulong ret;
    asm("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall1(long n, long a1)
{
    ulong ret;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall2(long n, long a1, long a2)
{
    ulong ret;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
                          : "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall3(long n, long a1, long a2, long a3)
{
    ulong ret;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
                          "d"(a3) : "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall4(long n, long a1, long a2, long a3, long a4)
{
    ulong ret;
    register long r10 __asm__("r10") = a4;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
                          "d"(a3), "r"(r10): "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall5(long n, long a1, long a2, long a3, long a4, long a5)
{
    ulong ret;
    register long r10 __asm__("r10") = a4;
    register long r8 __asm__("r8") = a5;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
                          "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
    return ret;
}

static inline
long _syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
{
    ulong ret;
    register long r10 __asm__("r10") = a4;
    register long r8 __asm__("r8") = a5;
    register long r9 __asm__("r9") = a6;
    asm("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
                          "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
    return ret;
}