Systém se volá instrukcí softwarového přerušení int $0x80. V registru %eax je číslo služby kterou voláme a v registrech %ebx, %ecx, %edx, %esi, %edi a %ebp jsou parametry volání. Tímto způsobem je možno předat až 6 parametrů. Pokud předáváme parametrů více, předávají se pomocí ukazatele na blok paměti. Tento ukazatel uložíme do registru %ebx. Návratová hodnota volání je obvykle vrácena v registru %eax.
movl $1, %eax # Číslo volání/služby
movl $0, %ebx
int $0x80Čísla jedotlivých volání najdeme v hlavičkovém souboru /usr/include/asm/unistd.h. V případě architektury intel/amd jsou to hlavičkové soubory /usr/include/asm/unistd_32.h a /usr/include/asm/unistd_64.h.
Tabulka 75.1. Tabulka vybraných systémových volání jádra
| %eax | název | parametry | |
|---|---|---|---|
| 0 | sys_restart_syscall | ||
| 1 | sys_exit | | ebx=int |
| 2 | sys_fork | arch/x86/kernel/process_32.c | ebx=struct pt_regs |
| 3 | sys_read | | |
| 4 | sys_write | | |
| 5 | sys_open | | |
| 6 | sys_close | | |
| 7 | sys_waitpid | | |
| 8 | sys_creat | | |
| 9 | sys_link | | |
| 10 | sys_unlink | | |
| 11 | sys_execve | | |
| 12 | sys_chdir | | |
| 13 | sys_time | | |
| 14 | sys_mknod | | |
| 15 | sys_chmod | | |
| 16 | sys_lchown | | |
| 17 | sys_break | | |
| 18 | sys_oldstat | | |
| |||
| 162 | sys_nanosleep | | |
| |||
| 180 | pread64 | | |
| 181 | pwrite64 | | |
| 0 | sys_ | | |
| 0 | sys_ | | |
| 321 | sys_signalfd | | |
| 322 | sys_timerfd_create | | |
| 323 | sys_eventfd | | |
| 324 | sys_fallocate | | |
| 325 | sys_timerfd_settime | | |
| 326 | sys_timerfd_gettime | |