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 |
---|---|---|---|
251 |
Ustaw priorytet kolejkowania We/wy procesu (sys_ioprio_set) |
RDI = typ RSI = informacja zależna od typu RDX = nowy priorytet |
RAX = 0 RAX = błąd ESRCH, EPERM, EINVAL |
252 |
Pobierz priorytet kolejkowania We/wy procesu (sys_ioprio_get) |
RDI = typ RSI = informacja zależna od typu |
RAX = priorytet RAX = błąd ESRCH, EPERM, EINVAL |
253 |
Inicjalizacja kolejki zdarzeń inotify (sys_inotify_init) |
nic |
RAX = deskryptor kolejki RAX = błąd EMFILE, ENFILE, ENOMEM |
254 |
Dodaj obiekt obserwowany kolejki zdarzeń inotify (sys_inotify_add_watch) |
RDI = deskryptor kolejki inotify RSI = adres nazwy pliku ASCIIZ RDX = flagi inotify |
RAX = deskryptor obserwacjidanego pliku RAX = błąd EACCES, EBADF, EFAULT, EINVAL, ENOMEM, ENOSPC |
255 |
Usuń obserwację obiektu z kolejki zdarzeń inotify (sys_inotify_rm_watch) |
RDI = deskryptor kolejki inotify RSI = deskryptor obserwacji |
RAX = 0 RAX = błąd EBADF, EINVAL |
256 |
Przenieś strony pamięci procesu (sys_migrate_pages) |
RDI = PID procesu, którego strony przenieść RSI = największy numer węzła +1 RDX = adres tablicy DWORDów z co najmniej ECX/RSI bitami oznaczającymi stare węzły R10 = adres tablicy DWORDów z co najmniej ECX/RSI bitami oznaczającymi nowe węzły |
RAX = 0 RAX = błąd EPERM, ESRCH |
257 |
Otwórz plik względnie do katalogu (sys_openat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy pliku ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = bity dostępu R10 = prawa dostępu / tryb |
RAX = 0 RAX = błąd EBADF, ENOTDIR |
258 |
Utwórz katalog względnie do katalogu (sys_mkdirat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = prawa dostępu / tryb |
RAX = 0 RAX = błąd - każdy związany z systemem plików lub prawami dostępu |
259 |
Utworzenie pliku specjalnego względnie do katalogu (sys_mknodat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = typ urządzenia OR prawa dostępu R10, R8 - wynik działania (zmodyfikowanego) makra makedev |
RAX = 0 RAX = błąd EACCES, EEXIST, EFAULT, EINVAL, ELOOP, ENAMETOOLONG, ENOENT, ENOMEM, ENOSPC, ENOTDIR, EPERM, EROFS |
260 |
Zmiana właściciela obiektu położonego względnie do katalogu (sys_fchownat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = identyfikator UID nowego właściciela obiektu R10 = identyfikator GID grupy, która stanie się właścicielem obiektu R8 = 0 lub wartość AT_SYMLINK_NOFOLLOW=100h, wtedy nie będzie podążał za dowiązaniami symbolicznymi |
RAX = 0 RAX = błąd EBADF, ENOTDIR, EINVAL |
261 |
Zmiana czasów dostępu i zmian pliku położonego względnie do katalogu (sys_futimesat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = adres tablicy 2 struktur timeval, NULL gdy chcemy bieżący czas. Pierwsza struktura opisuje czas dostępu, druga - czas zmiany |
RAX = 0 RAX = błąd EBADF, ENOTDIR |
262 |
Pobierz status obiektu położonego względnie do katalogu (sys_fstatat64) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = adres struktury stat na dane R10 = 0 lub AT_SYMLINK_NOFOLLOW (=0x100), gdy nie chcemy dereferencjonować dowiązań |
RAX = 0 RAX = błąd EBADF, ENOTDIR, EINVAL, błędy sys_stat |
263 |
Usuń obiekt względnie do katalogu (sys_ulinkat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres ścieżki/nazwy ASCIIZ. Jeśli ścieżka jest względna, jest brana jako względna względem podanego katalogu zamiast bieżącego katalogu procesu RDX = 0 lub AT_REMOVEDIR (=0x200), gdy chcemy usuwać katalogi |
RAX = 0 RAX = błąd EBADF, ENOTDIR, EINVAL |
264 |
Przenieś plik/Zmień nazwę pliku względnie do katalogu (sys_renameat) |
RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres starej nazwy (i ewentualnie ścieżki) ASCIIZ RDX = deskryptor otwartego katalogu docelowego R10 = adres nowej nazwy (i ewentualnie ścieżki) ASCIIZ |
RAX = 0 RAX = błąd EBUSY, EEXIST, EISDIR, ENOTEMPTY, EXDEV (i inne błędy systemu plików), EBADF, ENOTDIR |
265 |
Utworzenie twardego dowiązania do pliku względnie do katalogu (sys_linkat) |
RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy istniejącego pliku ASCIIZ RDX = deskryptor otwartego katalogu docelowego R10 = adres nazwy nowego pliku ASCIIZ R8 = 0 (flagi) |
RAX = 0 RAX=błąd EACCES, EIO, EPERM, EEXIST, EFAULT, ELOOP, EMLINK, ENAMETOOLONG, ENOENT, ENOMEM, ENOSPC, ENOTDIR, EROFS, EXDEV |
266 |
Stwórz dowiązanie symboliczne do pliku względnie do katalogu (sys_symlinkat) |
RDI = adres nazwy pliku ASCIIZ RSI = deskryptor otwartego katalogu docelowego lub wartość AT_FDCWD=-100 oznaczająca katalog bieżący RDX = adres nazwy linku ASCIIZ |
RAX = 0 RAX = błędy związane z uprawnieniami lub systemem plików |
267 |
Przeczytaj zawartość linku symbolicznego względnie do katalogu (sys_readlinkat) |
RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy dowiązania symbolicznego ASCIIZ RDX = adres bufora, który otrzyma przeczytaną informację R10 = długość bufora |
RAX = 0 RAX = błąd EBADF, ENOTDIR |
268 |
Zmiana uprawnień obiektu względnie do katalogu (sys_fchmodat) |
RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy pliku ASCIIZ RDX = nowe prawa dostępu R10 = flagi, musi być zero |
RAX = 0 RAX = błąd EBADF, ENOTDIR |
269 |
Sprawdź uprawnienia dostępu do pliku (sys_faccessat) |
RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy pliku ASCIIZ RDX = prawa dostępu / tryb (wartości R_OK, W_OK, X_OK) R10 = flagi: 0 lub AT_SYMLINK_NOFOLLOW=100h (nie podążaj za dowiązaniami symbolicznymi) lub AT_EACCESS=0x200 (sprawdzanie według efektywnych UID i GID) |
RAX = 0 RAX = błąd EBADF, ENOTDIR, EINVAL |
270 |
Oczekiwanie zmiany stanu deskryptora(ów) (sys_pselect6) |
RDI = najwyższy numer spośród deskryptorów + 1 RSI = adres tablicy deskryptorów sprawdzanych, czy można z nich czytać RDX = adres tablicy deskryptorów sprawdzanych, czy można do nich pisać R10 = adres tablicy deskryptorów sprawdzanych, czy nie wystąpił u nich wyjątek R8 = adres struktury timespec zawierającą maksymalny czas oczekiwania R9 = adres struktury sigset_t zawierającą maskę sygnałów do ustawienia na czas wywołania tej funkcji |
RAX = całkowita liczba deskryptorów, która pozostała w tablicach RAX = 0, gdy skończył się czas RAX = błąd EBADF, EINTR, EINVAL, ENOMEM |
271 |
Czekaj na zdarzenia na deskryptorze (sys_ppoll) |
RDI = adres tablicy struktur pollfd RSI = liczba struktur pollfd w tablicy RDX = adres struktury timespec - czas oczekiwania lub 0 (nieskończoność) R10 = adres struktury sigset_t |
RAX = liczba odpowiednich deskryptorów RAX = 0, gdy czas upłynął RAX = błąd EFAULT, EINTR, EINVAL, EBADF, ENOMEM |
272 |
Cofnij współdzielenie (sys_unshare) |
RDI = CLONE_FILES, CLONE_FS lub CLONE_NEWNS spośród
flag |
RAX = 0 RAX=błąd EPERM, ENOMEM, EINVAL |
273 |
Ustaw listę sprawnych futeksów (sys_set_robust_list) |
RDI = adres pierwszego elementu listy struktur
typu robust_list_head RSI = rozmiar elementu listy podanej przez RDI |
RAX = 0 RAX = błąd EINVAL |
274 |
Pobierz listę sprawnych futeksów (sys_get_robust_list) |
RDI = PID procesu RSI = adres zmiennej, która otrzyma adres pierwszego elementu listy struktur typu robust_list_head RDX = adres zmiennej, która otrzyma rozmiar elementu listy podanej przez RSI |
RAX = 0 RAX = błąd EPERM, ESRCH, EFAULT |
275 |
Spleć dane z/do potoku (sys_splice) |
RDI = wejściowy deskryptor pliku RSI = offset w pliku wejściowym, skąd czytać dane (0 dla potoków) RDX = wyjściowy deskryptor pliku R10 = offset w pliku wyjściowym, dokąd zapisać dane (0 dla potoków) R8 = maksymalna liczba bajtów do przeniesienia R9 = flagi |
RAX = liczba przeniesionych bajtów RAX=błąd EBADF, ESPIPE, ENOMEM, EINVAL |
276 |
Duplikowanie zawartości potoku (sys_tee) |
RDI = wejściowy deskryptor pliku RSI = wyjściowy deskryptor pliku RDX = maksymalna liczba bajtów do przeniesienia R10 = flagi (te same, co dla sys_splice) |
RAX = liczba zduplikowanych bajtów RAX=błąd ENOMEM, EINVAL |
277 |
Synchronizuj segment pliku z dyskiem (sys_sync_file_range) |
RDI = deskryptor pliku RSI = początek zakresu danych do synchronizacji / RSI wskazuje na 64 bity adresu początku danych? RDX = liczba bajtów do zsynchronizowania / RDX wskazuje na 64-bitową liczbę bajtów do zsynchronizowania? R10 = flagi synchronizacji |
RAX = 0 RAX=błąd EBADF, EIO, EINVAL, ENOMEM, ENOSPC, ESPIPE |
278 |
Spleć strony pamięci do potoku (sys_vmsplice) |
RDI = wejściowy deskryptor potoku RSI = adres tablicy struktur iovec RDX = liczba elementów w tablicy pod [RSI] R10 = flagi (te same, co dla sys_splice) |
RAX = liczba bajtów przeniesionych do potoku RAX=błąd EBADF, ENOMEM, EINVAL |
279 |
Przesuń strony pamięci procesu (sys_move_pages) |
RDI = PID procesu RSI = liczba stron do przeniesienia RDX = adres tablicy adresów stron R10 = adres tablicy liczb całkowitych określających żądane miejsce dla danej strony R8 = adres tablicy na liczby całkowite, które otrzymają status wykonanej operacji R9 = flagi określające typ stron do przeniesienia (MPOL_MF_MOVE=2 oznacza tylko strony procesu, MPOL_MF_MOVE_ALL=4 oznacza wszystkie strony) |
RAX = 0 RAX=błąd E2BIG, EACCES, EFAULT, EINVAL, ENODEV, ENOENT, EPERM, ESRCH |
280 |
Zmień znaczniki czasu pliku (sys_utimensat) |
RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący RSI = adres nazwy pliku RDX = adres dwuelementowej tablicy struktur timespec, opisujących czas dostępu i zmiany R10 = flagi: 0 lub AT_SYMLINK_NOFOLLOW=0x100 (nie podążaj za dowiązaniami symbolicznymi) |
RAX = 0 RAX=błąd EACCES, EBADF, EFAULT, EINVAL, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, EPERM, EROFS, ESRCH |
281 |
Czekaj na deskryptorze pliku epoll (sys_epoll_pwait) |
RDI = deskryptor epoll RSI = adres tablicy struktur epoll_event RDX = maksymalna liczba zdarzeń, na które będziemy czekać R10 = czas czekania w milisekundach (-1 = nieskończoność) R8 = adres zestawu sygnałów (tablicy 32 DWORDów), które też przerwą czekanie |
RAX = liczba deskryptorów gotowych RAX = błąd EFAULT, EINTR, EBADF, EINVAL |
282 |
Stwórz deskryptor pliku do otrzymywania sygnałów (sys_signalfd) |
RDI = deskryptor: -1, gdy tworzymy nowy lub nieujemny, gdy zmieniamy istniejący RSI = adres maski sygnałów (sigset), które chcemy otrzymywać |
RAX = deskryptor pliku RAX=błąd EBADF, EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
283 |
Stwórz nowy czasomierz (sys_timerfd_create) |
RDI = identyfikator zegara (CLOCK_REALTIME=0 lub CLOCK_MONOTONIC=1) RSI = flagi: 0 lub zORowane wartości TFD_NONBLOCK (=04000 ósemkowo, operacje mają być nieblokujące), TFD_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = deskryptor pliku RAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
284 |
Stwórz deskryptor pliku do otrzymywania zdarzeń (sys_eventfd) |
RDI = wstępna wartość licznika zdarzeń |
RAX = deskryptor pliku RAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
285 |
Manipulacja przestrzenią pliku (sys_fallocate) |
RDI = deskryptor pliku RSI = tryb = FALLOC_FL_KEEP_SIZE (alokuje i zeruje przestrzeń na dysku w podanym zakresie bajtów) = 1 RDX = offset początku zakresu bajtów w pliku R10 = liczba bajtów w zakresie |
RAX = liczba deskryptorów gotowych RAX = błąd EFAULT, EINTR, EBADF, EINVAL |
286 |
Uruchom lub zatrzymaj czasomierz (sys_timerfd_settime) |
RDI = deskryptor pliku czasomierza RSI = flagi (0 uruchamia czasomierz względy, TFD_TIMER_ABSTIME=1 - bezwzględny) RDX = adres struktury itimerspec, zawierającej początkowy czas R10 = adres struktury itimerspec, która otrzyma aktualny czas |
RAX = 0 RAX=błąd EINVAL, EFAULT, EBADF |
287 |
Pobierz czas na czasomierzu (sys_timerfd_gettime) |
RDI = deskryptor pliku czasomierza RSI = adres struktury itimerspec, która otrzyma aktualny czas |
RAX = 0 RAX=błąd EINVAL, EFAULT, EBADF |
288 |
sys_paccept |
brak danych |
brak danych |
289 |
Stwórz deskryptor pliku do otrzymywania sygnałów (sys_signalfd4) |
RDI = deskryptor: -1, gdy tworzymy nowy lub nieujemny, gdy zmieniamy istniejący RSI = adres maski sygnałów (sigset), które chcemy otrzymywać RDX = flagi: 0 lub zORowane wartości SFD_NONBLOCK (=04000 ósemkowo, operacje mają być nieblokujące), SFD_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = deskryptor pliku RAX=błąd EBADF, EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
290 |
Stwórz deskryptor pliku do otrzymywania zdarzeń (sys_eventfd2) |
RDI = wstępna wartość licznika zdarzeń RSI = flagi: 0 lub zORowane wartości EFD_NONBLOCK (=04000 ósemkowo, operacje mają być nieblokujące), EFD_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = deskryptor pliku RAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
291 |
Utwórz deskryptor pliku epoll (sys_epoll_create1) |
RDI = flagi: 0 lub EPOLL_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = nowy deskryptor pliku RAX = błąd ENOMEM, EINVAL, EMFILE, ENFILE |
292 |
Zamień deskryptor zduplikowanym deskryptorem pliku (sys_dup3) |
RDI = deskryptor do zduplikowania RSI = deskryptor, do którego powinien być przyznany duplikat RDX = flagi: 0 lub O_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = zduplikowany deskryptor RAX = błąd EBADF, EMFILE, EBUSY, EINTR, EINVAL |
293 |
Utwórz potok (sys_pipe2) |
RDI = adres tablicy dwóch DWORDów RSI = flagi: 0 lub zORowane wartości O_NONBLOCK (=04000 ósemkowo, operacje mają być nieblokujące), O_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = 0 i pod [RDI]: deskryptor odczytu z potoku fd(0) pod [RDI], deskryptor zapisu do potoku
fd(1) pod [RDI+4] RAX = błąd EFAULT, EMFILE, ENFILE, EINVAL |
294 |
Inicjalizacja kolejki zdarzeń inotify (sys_inotify_init1) |
RDI = flagi: 0 lub zORowane wartości IN_NONBLOCK (=04000 ósemkowo, operacje mają być nieblokujące),
IN_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
RAX = deskryptor kolejki RAX = błąd EMFILE, ENFILE, ENOMEM, EINVAL |
295 |
Odczyt danych do wielu buforów (sys_preadv) |
RDI = deskryptor otwartego pliku RSI = adres tablicy struktur iovec, do których zapisać dane RDX = liczba struktur iovec spod [RSI] R10 = numer bajtu, od którego czytać (offset w pliku) |
RAX = liczba odczytanych bajtów RAX = błąd funkcji sys_read, sys_lseek lub EINVAL |
296 |
Zapis danych z wielu buforów (sys_pwritev) |
RDI = deskryptor otwartego pliku RSI = adres tablicy struktur iovec, z których brać dane do zapisania RDX = liczba struktur iovec spod [RSI] R10 = numer bajtu, od którego zapisywać (offset w pliku) |
RAX = liczba zapisanych bajtów RAX = błąd funkcji sys_write, sys_lseek lub EINVAL |
297 |
Zakolejkuj dane i sygnał dla wątku (sys_rt_tgsigqueueinfo) |
RDI = ID grupy wątków RSI = ID wątku RDX = sygnał do wysłania R10 = adres struktury siginfo z danymi do wysłania |
RAX = 0 RAX = błąd EAGAIN, EINVAL, EPERM, ESRCH |
298 |
sys_perf_counter_open |
brak danych |
brak danych |
299 |
Odbierz wiele wiadomości z gniazda (sys_recvmmsg) |
RDI = deskryptor otwartego gniazda RSI = adres tablicy struktur mmsghdr, do których zapisać dane RDX = liczba struktur mmsghdr spod [RSI] R10 = 0 lub zORowane flagi funkcji recvmsg i dodatkowa flaga MSG_WAITFORONE (=0x10000) oznaczająca czekanie na jedną wiadomość R8 = adres struktury timespec oznaczającej czas czekania lub 0 (czekanie bez końca) |
RAX = liczba otrzymanych wiadomości RAX = błąd funkcji recvmsg lub EINVAL |
300 |
Utwórz grupę fanotify (sys_fanotify_init) |
RDI = flagi fanotify RSI = O_RDONLY, O_WRONLY, O_RDWR, O_LARGEFILE, O_CLOEXEC z bitów dostępu jako flagi zdarzeń |
RAX = nowy deskryptor pliku RAX = błąd EINVAL, EMFILE, ENOMEM, ENOSYS, EPERM |