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 |
|