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 |
---|---|---|---|
151 |
Zablokowanie całej pamięci procesu (sys_mlockall) |
RDI = flagi blokowania pamięci |
RAX = 0 RAX = błąd EINVAL, ENOMEM, EAGAIN, EPERM |
152 |
Odblokowanie całej pamięci procesu (sys_munlockall) |
nic |
RAX = 0 RAX = błąd. |
153 |
Wirtualnie odłącz bieżący terminal (sys_vhangup) |
nic |
RAX = 0 RAX = błąd EPERM |
154 |
Zmień tablicę LDT (sys_modify_ldt) |
RDI = numer funkcji RSI = adres miejsca na przechowanie danych RDX = liczba bajtów obszaru pod [RSI] |
RAX = liczba przeczytanych bajtów lub 0 (gdy zapisywano) RAX = błąd EINVAL, ENOSYS, EFAULT |
155 |
Zmień główny system plików/katalog (sys_pivot_root) |
RDI = adres łańcucha znaków - nowy główny katalog bieżącego procesu RSI = adres łańcucha znaków - otrzyma stary główny katalog bieżącego procesu |
RAX = 0 RAX = błąd EBUSY, EINVAL, EPERM, ENOTDIR + błędy sys_stat |
156 |
Zmień parametry jądra (sys_sysctl) |
RDI = adres struktury sysctl_args |
RAX = 0 RAX = błąd EPERM, ENOTDIR, EFAULT |
157 |
Działania na procesie (sys_prctl) |
RDI = opcja RSI, RDX, R10, R8 = argumenty |
RAX = 0 lub 1 RAX = błąd EINVAL |
158 |
Ustaw stan wątku zależny od architektury (sys_arch_prctl) |
RDI = kod podfunkcji RSI = parametr podfunkcji (wartość do wstawienia lub adres zmiennej w przypadku pobierania) |
RAX = 0 RAX = błąd EFAULT, EINVAL, EPERM |
159 |
Dopasowanie zegara w jądrze (sys_adjtimex) |
RDI = adres struktury timex |
RAX = stan zegara (patrz timex) RAX = błąd EINVAL, EPERM, EFAULT |
160 |
Ustaw limity zasobów (sys_setrlimit) |
RDI = numer zasobu RSI = adres struktury rlimit |
RAX = 0 RAX = błąd EFAULT, EINVAL, EPERM |
161 |
Zmień katalog główny (sys_chroot) |
RDI = adres nazwy/ścieżki nowego katalogu głównego |
RAX = 0 RAX = błąd - każdy zależny od systemu plików |
162 |
Zapisz pamięć podręczną na dysku (sys_sync) |
nic |
RAX zawsze = 0 i nie ma żadnych błędów |
163 |
Włącz/wyłącz zapisywanie kończonych procesów (sys_acct) |
RDI = adres nazwy pliku, gdzie ma być zapisywana informacja o kończonych procesach lub
NULL, gdy chcemy wyłączyć takie zapisywanie. |
RAX = 0 RAX = błąd ENOSYS, ENOMEM, EPERM, EACCES, EIO, EUSERS |
164 |
Ustaw czas (sys_settimeofday) |
RDI = adres struktury timeval RSI = adres struktury timezone |
RAX = 0 RAX = błąd EFAULT, EINVAL, EPERM |
165 |
Montowanie systemu plików (sys_mount) |
RDI = adres nazwy urządzenia/pliku specjalnego RSI = adres ścieżki do punktu montowania RDX = adres nazwy systemu plików R10 = flagi montowania R8 = adres dodatkowych danych, niezależne od urządzenia |
RAX = 0 RAX = błąd - każdy, który może się zdarzyć w systemie plików lub jądrze |
166 |
Odmontowanie systemu plików 2 (sys_umount2) |
RDI = adres nazwy zamontowanego pliku specjalnego/katalogu ASCIIZ RSI = flaga = 1, by siłą odmonotwać, inaczej 0 |
RAX = 0 RAX = błąd - każdy związany z systemem plików |
167 |
Uruchomienie pliku wymiany (sys_swapon) |
RDI = adres ścieżki do pliku/urządzenia swap RSI = flagi wymiany |
RAX = 0 RAX = błąd |
168 |
Wyłączenie pliku wymiany (sys_swapoff) |
RDI = adres ścieżki i nazwy pliku/urządzenia swap |
RAX = 0 RAX = błąd |
169 |
Reboot systemu (sys_reboot) |
RDI = pierwsza liczba magiczna = 0FEE1DEADh RSI = druga liczba magiczna = 672274793 lub 85072278 lub 369367448 RDX = flaga R10 = adres dodatkowego argumentu (tylko przy RESTART2) |
RAX = 0 RAX = błąd |
170 |
Ustaw nazwę hosta dla systemu (sys_sethostname) |
RDI = adres nazwy hosta RSI = długość nazwy |
RAX = 0 RAX = błąd EFAULT, EINVAL, EPERM |
171 |
Ustal nazwę domeny (sys_setdomainname) |
RDI = adres łańcucha znaków, zawierającego domenę RSI = długość tego łańcucha znaków |
RAX = 0 RAX = błąd EINVAL, EPERM, EFAULT |
172 |
Ustaw prawa dostępu do wszystkich portów (sys_iopl) |
RDI = poziom IOPL od 0 (normalny proces) do 3 |
RAX = 0 RAX = błąd |
173 |
Zmień prawa dostępu do portów (sys_ioperm) |
RDI = początkowy numer portu RSI = liczba bajtów, które będzie można wysłać/odebrać RDX = końcowy numer portu |
RAX = 0 RAX = błąd |
174 |
Utwórz wpis ładowalnego modułu jądra (sys_create_module) |
RDI = adres nazwy modułu RSI = długość nazwy |
RAX = adres modułu w jądrze RAX = błąd EINVAL, EPERM, EFAULT, EEXIST, ENOMEM |
175 |
Inicjalizacja modułu jądra (sys_init_module) |
RDI = adres nazwy modułu RSI = adres struktury module |
RAX = 0 RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY |
176 |
Usuń wpis nieużywanego modułu jądra (sys_delete_module) |
RDI = adres nazwy modułu (0 oznacza usunięcie wpisów wszystkich nieużywanych modułów,
które można usunąć automatycznie) |
RAX = 0 RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY |
177 |
Pobierz symbole eksportowane przez jądro i moduły (sys_get_kernel_syms) |
RDI = adres struktury kernel_sym
(0 oznacza, że chcemy tylko pobrać liczbę symboli) |
RAX = liczba symboli RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY |
178 |
Zapytaj o moduł (sys_query_module) |
RDI = adres nazwy modułu lub NULL (jądro) RSI = numer podfunkcji RDX = adres bufora R10 = rozmiar bufora R8 = adres DWORDa |
RAX = 0 RAX = błąd EFAULT, ENOSPC, EINVAL, ENOENT |
179 |
Zarządzanie limitami dyskowymi (sys_quotactl) |
RDI = komenda limitu RSI = adres nazwy pliku urządzenia blokowego, który ma być zarządzany RDX = identyfikator UID lub GID R10 = adres dodatkowej struktury danych (zależy od komendy w RDI) |
RAX = 0 RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY, ENOTBLK, ESRCH, EUSERS, EACCES |
180 |
Interfejs demona NFS (sys_nfsservctl) |
RDI = komenda RSI = adres struktury nfsctl_arg RDX = adres unii union nfsctl_res |
RAX = 0 RAX = błąd |
181 |
Funkcja systemowa sys_getpmsg |
zarezerwowane dla LiS/STREAMS |
zawsze RAX = ENOSYS |
182 |
Funkcja systemowa sys_putpmsg |
zarezerwowane dla LiS/STREAMS |
zawsze RAX = ENOSYS |
183 |
Funkcja systemowa sys_afs_syscall |
niezaimplementowane |
zawsze RAX = ENOSYS |
184 |
Zarezerwowane (sys_tuxcall) |
niezaimplementowane |
zawsze RAX = ENOSYS |
185 |
Funkcja systemowa sys_security |
niezaimplementowane |
zawsze RAX = ENOSYS |
186 |
Pobierz identyfikator wątku (sys_gettid) |
nic |
RAX = id wątku |
187 |
Czytaj kilka stron pliku z wyprzedzeniem do pamięci podręcznej (sys_readahead) |
RDI = deskryptor pliku RSI = miejsce w pliku, od którego zacząć RDX = liczba bajtów do przeczytania |
RAX = EBADF, gdy błąd |
188 |
Ustaw wartość atrybutu rozszerzonego (sys_setxattr) |
RDI = adres ścieżki pliku RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu R8 = flaga (1=utwórz, 2=zamień) |
RAX = 0 RAX = błąd |
189 |
Ustaw wartość atrybutu rozszerzonego (sys_lsetxattr) |
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu R8 = flaga (1=utwórz, 2=zamień) |
RAX = 0 RAX = błąd |
190 |
Ustaw wartość atrybutu rozszerzonego (sys_fsetxattr) |
RDI = deskryptor pliku RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu R8 = flaga (1=utwórz, 2=zamień) |
RAX = 0 RAX = błąd |
191 |
Pobierz wartość atrybutu rozszerzonego (sys_getxattr) |
RDI = adres ścieżki pliku RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu |
RAX = 0 RAX = błąd |
192 |
Pobierz wartość atrybutu rozszerzonego (sys_lgetxattr) |
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu |
RAX = 0 RAX = błąd |
193 |
Pobierz wartość atrybutu rozszerzonego (sys_fgetxattr) |
RDI = deskryptor pliku RSI = adres nazwy atrybutu RDX = wartość atrybutu R10 = długość atrybutu |
RAX = 0 RAX = błąd |
194 |
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_listxattr) |
RDI = adres ścieżki pliku RSI = adres tablicy na nazwy RDX = długość tablicy |
RAX = 0 RAX = błąd |
195 |
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_llistxattr) |
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi RSI = adres tablicy na nazwy RDX = długość tablicy |
RAX = 0 RAX = błąd |
196 |
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_flistxattr) |
RDI = deskryptor pliku RSI = adres tablicy na nazwy RDX = długość tablicy |
RAX = 0 RAX = błąd |
197 |
Usuń atrybut rozszerzony pliku (sys_removexattr) |
RDI = adres ścieżki pliku RSI = adres nazwy atrybutu do usunięcia |
RAX = 0 RAX = błąd |
198 |
Usuń atrybut rozszerzony pliku (sys_lremovexattr) |
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi RSI = adres nazwy atrybutu do usunięcia |
RAX = 0 RAX = błąd |
199 |
Usuń atrybut rozszerzony pliku (sys_fremovexattr) |
RDI = deskryptor pliku RSI = adres nazwy atrybutu do usunięcia |
RAX = 0 RAX = błąd |
200 |
Zabij pojedyncze zadanie (sys_tkill) |
RDI = PID zadania (niekoniecznie całego procesu) RSI = numer sygnału do wysłania |
RAX = 0 RAX = błąd EINVAL, ESRCH, EPERM |