syscall(2) System Calls Manual syscall(2) syscall - (libc -lc) #include /* SYS_* */ #include long syscall(long number, ...); glibc ( feature_test_macros(7)): syscall(): glibc 2.19: _DEFAULT_SOURCE glibc 2.19: _BSD_SOURCE || _SVID_SOURCE syscall() number . syscall() (wrapper) . syscall() errno(3). . . 0 . -1 errno. ENOSYS . . syscall() 4BSD. (ABI) . glibc ( ) glibc . syscall() 32 . ARM (EABI) 64 ( long long) . syscall() glibc readahead(2) ARM EABI endian (little endian): syscall(SYS_readahead, fd, 0, (unsigned int) (offset & 0xFFFFFFFF), (unsigned int) (offset >> 32), count); (offset) 64 (fd) r0 64 r2/r3. r1 ( 0). endian ( ). MIPS O32 ABI PowerPC parisc ABI 32 Xtensa. parisc C ABI (shim layer) . fadvise64_64(2) ftruncate64(2) posix_fadvise(2) pread64(2) pwrite64(2) readahead(2) sync_file_range(2) truncate64(2). 64 _llseek(2) preadv(2) preadv2(2) pwritev(2) pwritev2(2). . . . ( vdso(7)) () . /ABI Ret Ret val val2 ------------------------------------------------------------------------------------------------------------------------------------------ alpha callsys v0 v0 a4 a3 1, 6 arc trap0 r8 r0 - - arm/OABI swi NR - r0 - - 2 arm/EABI swi 0x0 r7 r0 r1 - arm64 svc #0 w8 x0 x1 - blackfin excpt 0x0 P0 R0 - - i386 int $0x80 eax eax edx - ia64 break 0x100000 r15 r8 r9 r10 1, 6 loongarch syscall 0 a7 a0 - - m68k trap #0 d0 d0 - - microblaze brki r14,8 r12 r3 - - mips syscall v0 v0 v1 a3 1, 6 nios2 trap r2 r2 - r7 parisc ble 0x100(%sr2, %r0) r20 r28 - - powerpc sc r0 r3 - r0 1 powerpc64 sc r0 r3 - cr0.SO 1 riscv ecall a7 a0 a1 - s390 svc 0 r1 r2 r3 - 3 s390x svc 0 r1 r2 r3 - 3 superh trapa #31 r3 r0 r1 - 4, 6 sparc/32 t 0x10 g1 o0 o1 psr/csr 1, 6 sparc/64 t 0x6d g1 o0 o1 psr/csr 1, 6 tile swint1 R10 R00 - R01 1 x86-64 syscall eax rax rdx - 5 x32 syscall eax rax rdx - 5 xtensa syscall a2 a2 - - : [1] (0 -1 ) . . sparc (csr) (psr) . powerpc64 (SO) 0 (cr0). [2] NR . [3] s390 s390x NR ( ) svc NR 256. [4] (trap) SuperH trapa#31 (ABI) "" . [5] ABI x32 ABI x86-64 : o ABI x32 OR __X32_SYSCALL_BIT . ABI . o x32 long ( struct timeval struct rlimit 64 ). 512 ( __X32_SYSCALL_BIT). __NR_readv 19 ABI x86-64 __X32_SYSCALL_BIT | 515 ABI x32. i386. preadv2(2) struct iovec 4 ("compat_iovec" ) pos 8 ABI . [6] ( Alpha IA-64 MIPS SuperH sparc/32 sparc/64) ("Retval2" ) pipe(2) Alpha getxpid(2) getxuid(2) getxgid(2) . ABI System V. . /ABI arg1 arg2 arg3 arg4 arg5 arg6 arg7 ----------------------------------------------------------------------------------------- alpha a0 a1 a2 a3 a4 a5 - arc r0 r1 r2 r3 r4 r5 - arm/OABI r0 r1 r2 r3 r4 r5 r6 arm/EABI r0 r1 r2 r3 r4 r5 r6 arm64 x0 x1 x2 x3 x4 x5 - blackfin R0 R1 R2 R3 R4 R5 - i386 ebx ecx edx esi edi ebp - ia64 out0 out1 out2 out3 out4 out5 - loongarch a0 a1 a2 a3 a4 a5 a6 m68k d1 d2 d3 d4 d5 a0 - microblaze r5 r6 r7 r8 r9 r10 - mips/o32 a0 a1 a2 a3 - - - 1 mips/n32,64 a0 a1 a2 a3 a4 a5 - nios2 r4 r5 r6 r7 r8 r9 - parisc r26 r25 r24 r23 r22 r21 - powerpc r3 r4 r5 r6 r7 r8 r9 powerpc64 r3 r4 r5 r6 r7 r8 - riscv a0 a1 a2 a3 a4 a5 - s390 r2 r3 r4 r5 r6 r7 - s390x r2 r3 r4 r5 r6 r7 - superh r4 r5 r6 r7 r0 r1 r2 sparc/32 o0 o1 o2 o3 o4 o5 - sparc/64 o0 o1 o2 o3 o4 o5 - tile R00 R01 R02 R03 R04 R05 - x86-64 rdi rsi rdx r10 r8 r9 - x32 rdi rsi rdx r10 r8 r9 - xtensa a6 a3 a4 a5 a8 a9 - : [1] mips/o32 5 8 . . #define _GNU_SOURCE #include #include #include #include int main(void) { pid_t tid; tid = syscall(SYS_gettid); syscall(SYS_tgkill, getpid(), tid, SIGHUP); } _syscall(2) intro(2) syscalls(2) errno(3) vdso(7) 3 . . : . 6.18 2 2026 syscall(2)