Jeśli jakaś funkcja zakończy się błędem, w RAX zwracana jest wartość ujemna z przedziału od -4096 do -1 włącznie.
Z drugiej strony, opisy funkcji na stronach manuala mówią, że zwracane jest -1, a wartość błędu jest zapisywana do zmiennej errno z biblioteki GLIBC. Dzieje się tak tylko w przypadku, gdy korzystamy z interfejsu języka C (czyli deklarujemy i uruchamiamy zewnętrzne funkcje odpowiadające wywołaniom systemowym i linkujemy nasz program z biblioteką języka C), a nie bezpośrednio z wywołań systemowych (czyli syscall).
Najbardziej aktualne informacje o funkcjach systemowych można znaleźć zazwyczaj
w sekcji 2 (lub 3) manuala, na przykład man 2 open
.
Najnowsze wersje jądra można znaleźć na www.kernel.org, a pliki z listą funkcji i ich numerów są pod ścieżkami:
Najnowsze wersje stron manuala można znaleźć tu: www.kernel.org/pub/linux/docs/man-pages.
Napis ASCIIZ oznacza łańcuch znaków ASCII zakończony znakiem/bajtem Zerowym.
Jeśli potrzeba, przy każdej funkcji jest odnośnik do opisu argumentów i innych dodatkowych informacji: typów danych, wartości błędów, możliwych wartości parametrów itp.
Numer/ RAX | Opis | Argumenty | Zwraca |
---|---|---|---|
101 |
Śledzenie procesu (sys_ptrace) |
RDI = żądane działanie RSI = identyfikator PID żądanego procesu RDX = adres w procesie docelowym R10 = adres w procesie śledzącym |
RAX zależne od działania RAX = błąd EIO, EFAULT, EPERM, ESRCH |
102 |
Pobierz identyfikator użytkownika (sys_getuid) |
nic |
RAX = numer UID |
103 |
Opcje logowania (sys_syslog) |
RDI = komenda syslog RSI = adres bufora znakowego RDX = liczba bajtów (patrz opis RDI) |
RAX = liczba bajtów (patrz opis RDI) lub 0 RAX = błąd EINVAL, EPERM, ERESTARTSYS, ENOSYS |
104 |
Pobierz ID grupy bieżącego procesu (sys_getgid) |
nic |
RAX = ID grupy |
105 |
Ustaw identyfikator użytkownika (sys_setuid) |
RDI = nowy UID |
RAX = 0 RAX = błąd EPERM |
106 |
Ustaw ID grupy bieżącego procesu (sys_setgid) |
RDI = nowy ID grupy |
RAX = 0 RAX = błąd EPERM |
107 |
Pobierz efektywne ID użytkownika bieżącego procesu (sys_geteuid) |
nic |
RAX = UID |
108 |
Pobierz efektywne ID grupy bieżącego procesu (sys_getegid) |
nic |
RAX = GID |
109 |
Ustaw ID grupy procesu (sys_setpgid) |
RDI = ID procesu (PID) RSI = ID grupy |
RAX = 0 RAX = błąd EINVAL, EPERM, ESRCH |
110 |
Pobierz PID procesu rodzica (sys_getppid) |
nic |
RAX = PID rodzica |
111 |
Pobierz ID grupy procesu rodzica (sys_getpgrp) |
nic |
RAX = GID rodzica RAX=błąd EINVAL, EPERM, ESRCH |
112 |
Stwórz sesję, ustaw ID grupy (sys_setsid) |
nic |
RAX = ID procesu uruchamiającego RAX=błąd EPERM |
113 |
Ustaw realny i efektywny ID użytkownika (sys_setreuid) |
RDI = realny ID użytkownika (UID) RSI = efektywny UID |
RAX = 0 RAX = błąd EPERM |
114 |
Ustaw realny i efektywny ID grupy (sys_setregid) |
RDI = realny ID grupy (GID) RSI = efektywny GID |
RAX = 0 RAX = błąd EPERM |
115 |
Pobierz liczbę dodatkowych grup (sys_getgroups) |
RDI = rozmiar tablicy z RSI RSI = adres tablicy, gdzie zostaną zapisane GID-y (DWORDY) grup dodatkowych |
RAX = liczba dodatkowych grup procesu RAX = błąd EFAULT, EINVAL, EPERM |
116 |
Ustaw liczbę dodatkowych grup (sys_setgroups) |
RDI = rozmiar tablicy z RSI RSI = adres tablicy, gdzie zawierającą GID-y (DWORDY) |
RAX = 0 RAX = błąd EFAULT, EINVAL, EPERM |
117 |
Ustaw różne ID użytkownika (sys_setresuid) |
RDI = realny UID lub -1 (wtedy jest bez zmian) RSI = efektywny UID lub -1 (bez zmian) RDX = zachowany (saved) UID lub -1 (bez zmian) |
RAX = 0 RAX = błąd EPERM |
118 |
Pobierz różne ID użytkownika (sys_getresuid) |
RDI = adres DWORDa, który otrzyma realny UID RSI = adres DWORDa, który otrzyma efektywny UID RDX = adres DWORDa, który otrzyma zachowany UID |
RAX = 0 RAX = błąd EFAULT |
119 |
Ustaw realny, efektywny i zachowany ID grupy (sys_setresgid) |
RDI = realny GID RSI = efektywny GID RDX = zachowany (saved) GID |
RAX = 0 RAX = błąd EPERM |
120 |
Pobierz realny, efektywny i zachowany ID grupy (sys_getresgid) |
RDI = adres DWORDa, który otrzyma realny GID RSI = adres DWORDa, który otrzyma efektywny GID RDX = adres DWORDa, który otrzyma zachowany (saved) GID |
RAX = 0 RAX = błąd EFAULT |
121 |
Pobierz ID grupy procesów dla danego procesu (sys_getpgid) |
RDI = PID danego procesu |
RAX = ID grupy procesów RAX = błąd ESRCH |
122 |
Ustal UID przy sprawdzaniu systemów plików (sys_setfsuid) |
RDI = nowy ID użytkownika |
RAX = stary UID (zawsze) |
123 |
Ustal GID przy sprawdzaniu systemów plików (sys_setfsgid) |
RDI = nowy ID grupy |
RAX = stary GID (zawsze) |
124 |
Pobierz ID sesji dla procesu (sys_getsid) |
RDI = PID procesu, którego ID sesji chcemy znać |
RAX = ID sesji RAX = błąd EPERM, ESRCH |
125 |
Pobierz możliwości procesu (sys_capget) |
RDI = adres struktury cap_user_header_t RSI = adres struktury cap_user_data_t |
RAX = RDI RAX=NULL, gdy błąd EPERM, EINVAL |
126 |
Ustaw możliwości procesu (sys_capset) |
RDI = adres struktury cap_user_header_t RSI = adres struktury cap_user_data_t |
RAX = RDI RAX=NULL, gdy błąd EPERM, EINVAL |
127 |
Pobierz sygnały oczekujące (sys_rt_sigpending) |
RDI = adres zestawu sygnałów, który otrzyma oczekujące sygnały RSI = rozmiar struktury sigset_t |
RAX = 0 RAX=błąd EFAULT |
128 |
Synchronicznie czekaj na zakolejkowane sygnały (sys_rt_sigtimedwait) |
RDI = adres zestawu sygnałów, na które czekać RSI = adres struktury siginfo, która otrzyma informację o sygnale RDX = adres struktury timespec określającej czas oczekiwania R10 = rozmiar struktury sigset_t |
RAX = numer sygnału RAX=błąd EINVAL, EINTR, EAGAIN, EFAULT |
129 |
Zakolejkuj sygnał dla procesu (sys_rt_sigqueueinfo) |
RDI=PID procesu, który ma otrzymać sygnał RSI=numer sygnału RDX=adres struktury siginfo_t do wysłania procesowi razem z sygnałem |
RAX = 0 RAX=błąd EFAULT, EPERM |
130 |
Czekaj na sygnał (sys_rt_sigsuspend) |
RDI = adres zestawu sygnałów, na które czekać RSI = rozmiar struktury sigset_t |
RAX = -1 RAX=błąd EINTR, EFAULT, EINVAL |
131 |
Ustaw alternatywny stos dla procedur obsługi sygnałów (sys_sigaltstack) |
RDI = adres struktury stack_t, opisującej nowy stos RSI = adres struktury stack_t, opisującej stary stos; lub NULL (ewentualnie RDX = adres nowego wierzchołka stosu) |
RAX = 0 RAX = błąd EPERM, EINVAL, ENOMEM |
132 |
Zmień czas dostępu do pliku (sys_utime) |
RDI = adres nazwy pliku (ASCIIZ) RSI = adres struktury utimbuf, NULL gdy chcemy bieżący czas |
RAX = 0 RAX = błąd EACCES, ENOENT, EPERM, EROFS |
133 |
Utworzenie pliku specjalnego (sys_mknod) |
RDI = adres ścieżki ASCIIZ RSI = typ urządzenia OR prawa dostępu RDX,R10 - wynik działania makra makedev |
RAX = 0 RAX = błąd EACCES, EEXIST, EFAULT, EINVAL, ELOOP, ENAMETOOLONG, ENOENT, ENOMEM, ENOSPC, ENOTDIR, EPERM, EROFS |
134 |
Wybierz współdzieloną bibliotekę (sys_uselib) |
RDI = adres nazwy biblioteki ASCIIZ |
RAX = 0 RAX = błąd EACCES, ENOEXEC |
135 |
Ustal domenę wykonywania procesu (sys_personality) |
RDI = numer nowej domeny |
RAX = numer starej domeny RAX = błąd |
136 |
Informacje o zamontowanym systemie plików (sys_ustat) |
--zamiast tego, używaj statfs-- RDI = numer główny:poboczny urządzenia / RDI wskazuje na 64 bity numeru urządzenia RSI = adres struktury ustat |
RAX = 0 RAX = błąd EFAULT, EINVAL, ENOSYS |
137 |
Pobierz statystyki systemu plików (sys_statfs) |
RDI = adres nazwy dowolnego pliku w zamontowanym systemie plików RSI = adres struktury statfs |
RAX = 0 RAX = błąd |
138 |
Pobierz statystyki systemu plików (sys_fstatfs) |
RDI = deskryptor dowolnego otwartego pliku w zamontowanym systemie plików RSI = adres struktury statfs |
RAX = 0 RAX = błąd |
139 |
Informacje o systemie plików (sys_sysfs) |
RDI = opcja RSI, RDX - zależne od RDI |
RAX zależne od RDI RAX = błąd EINVAL, EFAULT |
140 |
Podaj priorytet szeregowania zadań (sys_getpriority) |
RDI = czyj priorytet zmieniamy RSI = identyfikator procesu, grupy procesów lub użytkownika, którego priorytet zmieniamy (0=bieżący) |
RAX = aktualny priorytet dla wybranego obiektu (od 1 do 40) |
141 |
Ustaw priorytet szeregowania zadań (sys_setpriority) |
RDI = czyj priorytet zmieniamy RSI = identyfikator procesu, grupy procesów lub użytkownika, którego priorytet zmieniamy (0=bieżący) RDX = nowy priorytet -20...19 |
RAX = 0 RAX = błąd |
142 |
Ustaw parametry szeregowania zadań (sys_sched_setparam) |
RDI = PID procesu RSI = adres struktury sched_param, zawierającej dane |
RAX = 0 RAX = błąd EINVAL, ESRCH, EPERM |
143 |
Pobierz parametry szeregowania zadań (sys_sched_getparam) |
RDI = PID procesu RSI = adres struktury sched_param, która otrzyma wynik |
RAX = 0 RAX = błąd EINVAL, ESRCH, EPERM |
144 |
Ustaw parametry/algorytm szeregowania zadań (sys_sched_setsheduler) |
RDI = PID procesu RSI = polityka RSI = adres struktury sched_param, zawierającej dane |
RAX = 0 RAX = błąd EINVAL, ESRCH, EPERM |
145 |
Pobierz parametry/algorytm szeregowania zadań (sys_sched_getsheduler) |
RDI = PID procesu |
RAX = polityka RAX = błąd EINVAL, ESRCH, EPERM |
146 |
Pobierz maksymalny priorytet statyczny (sys_sched_get_priority_max) |
RDI = polityka |
RAX = maksymalny priorytet dla tej polityki RAX = błąd EINVAL |
147 |
Pobierz minimalny priorytet statyczny (sys_sched_get_priority_min) |
RDI = polityka |
RAX = minimalny priorytet dla tej polityki RAX = błąd EINVAL |
148 |
Pobierz długość czasu w szeregowaniu cyklicznym (sys_sched_rr_get_interval) |
RDI = PID procesu (0 = ten proces) RSI = adres struktury timeval, która otrzyma wynik |
RAX = 0 RAX = błąd ESRCH, ENOSYS |
149 |
Zablokowanie stron w pamięci (sys_mlock) |
RDI = adres obszaru pamięci (wyrównany do wielokrotności rozmiaru strony pamięci) RSI = długość obszaru pamięci |
RAX = 0 RAX = błąd EINVAL, EAGAIN, ENOMEM |
150 |
Odblokowanie stron pamięci (sys_munlock) |
RDI = adres obszaru pamięci (wyrównany do wielokrotności rozmiaru strony pamięci) RSI = długość obszaru pamięci |
RAX = 0 RAX = błąd EINVAL, ENOMEM |