#pragma once #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 ·MIncore 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 ·MsgSnd 69 #define ·MsgRcv 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 ·SignaltStack 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 #define ·ProcessMadvise 440 /* * x86-64 linux ABI * syscall rdi rsi rdx r10 r8 r9 * return value in rax * * the syntax for extended GNU inline assembly * asm([instructions] : [output operands] : [input operands] : [clobbers] ) * operands are written as "constrants"(symbol) * available constraints are: * 'r': any register * 'a': eax, 'b': ebx, 'c': ecx, 'd': edx, 'S', esi, 'D' edi * '=': write only, previous value is discarded */ #define sysarg(x) ((long)(x)) static inline long _syscall0(long n) { ulong ret; asm volatile("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory" ); return ret; } static inline long _syscall1(long n, long a1) { ulong ret; asm volatile("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 volatile("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 volatile("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 volatile("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 volatile("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 volatile("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory" ); return ret; }