Jeśli jakaś funkcja zakończy się błędem, w EAX/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 przerwania int 80h).
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/ EAX | x86-64 RAX | Opis | Argumenty | Zwraca |
---|---|---|---|---|
301 | 263 |
Usuń obiekt względnie do katalogu (sys_ulinkat) |
EBX/RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/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 EDX/RDX = 0 lub AT_REMOVEDIR (=0x200), gdy chcemy usuwać katalogi |
EAX = 0 EAX = błąd EBADF, ENOTDIR, EINVAL |
302 | 264 |
Przenieś plik/Zmień nazwę pliku względnie do katalogu (sys_renameat) |
EBX/RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres starej nazwy (i ewentualnie ścieżki) ASCIIZ EDX/RDX = deskryptor otwartego katalogu docelowego ESI/R10 = adres nowej nazwy (i ewentualnie ścieżki) ASCIIZ |
EAX = 0 EAX = błąd EBUSY, EEXIST, EISDIR, ENOTEMPTY, EXDEV (i inne błędy systemu plików), EBADF, ENOTDIR |
303 | 265 |
Utworzenie twardego dowiązania do pliku względnie do katalogu (sys_linkat) |
EBX/RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres nazwy istniejącego pliku ASCIIZ EDX/RDX = deskryptor otwartego katalogu docelowego ESI/R10 = adres nazwy nowego pliku ASCIIZ EDI/R8 = 0 (flagi) |
EAX = 0 EAX=błąd EACCES, EIO, EPERM, EEXIST, EFAULT, ELOOP, EMLINK, ENAMETOOLONG, ENOENT, ENOMEM, ENOSPC, ENOTDIR, EROFS, EXDEV |
304 | 266 |
Stwórz dowiązanie symboliczne do pliku względnie do katalogu (sys_symlinkat) |
EBX/RDI = adres nazwy pliku ASCIIZ ECX/RSI = deskryptor otwartego katalogu docelowego lub wartość AT_FDCWD=-100 oznaczająca katalog bieżący EDX/RDX = adres nazwy linku ASCIIZ |
EAX = 0 EAX = błędy związane z uprawnieniami lub systemem plików |
305 | 267 |
Przeczytaj zawartość linku symbolicznego względnie do katalogu (sys_readlinkat) |
EBX/RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres nazwy dowiązania symbolicznego ASCIIZ EDX/RDX = adres bufora, który otrzyma przeczytaną informację ESI/R10 = długość bufora |
EAX = 0 EAX = błąd EBADF, ENOTDIR |
306 | 268 |
Zmiana uprawnień obiektu względnie do katalogu (sys_fchmodat) |
EBX/RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres nazwy pliku ASCIIZ EDX/RDX = nowe prawa dostępu ESI/R10 = flagi, musi być zero |
EAX = 0 EAX = błąd EBADF, ENOTDIR |
307 | 269 |
Sprawdź uprawnienia dostępu do pliku (sys_faccessat) |
EBX/RDI = deskryptor otwartego katalogu źródłowego lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres nazwy pliku ASCIIZ EDX/RDX = prawa dostępu / tryb (wartości R_OK, W_OK, X_OK) ESI/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) |
EAX = 0 EAX = błąd EBADF, ENOTDIR, EINVAL |
308 | 270 |
Oczekiwanie zmiany stanu deskryptora(ów) (sys_pselect6) |
EBX/RDI = najwyższy numer spośród deskryptorów + 1 ECX/RSI = adres tablicy deskryptorów sprawdzanych, czy można z nich czytać EDX/RDX = adres tablicy deskryptorów sprawdzanych, czy można do nich pisać ESI/R10 = adres tablicy deskryptorów sprawdzanych, czy nie wystąpił u nich wyjątek EDI/R8 = adres struktury timespec zawierającą maksymalny czas oczekiwania EBP/R9 = adres struktury sigset_t zawierającą maskę sygnałów do ustawienia na czas wywołania tej funkcji |
EAX = całkowita liczba deskryptorów, która pozostała w tablicach EAX = 0, gdy skończył się czas EAX = błąd EBADF, EINTR, EINVAL, ENOMEM |
309 | 271 |
Czekaj na zdarzenia na deskryptorze (sys_ppoll) |
EBX/RDI = adres tablicy struktur pollfd ECX/RSI = liczba struktur pollfd w tablicy EDX/RDX = adres struktury timespec - czas oczekiwania lub 0 (nieskończoność) ESI/R10 = adres struktury sigset_t |
EAX = liczba odpowiednich deskryptorów EAX = 0, gdy czas upłynął EAX = błąd EFAULT, EINTR, EINVAL, EBADF, ENOMEM |
310 | 272 |
Cofnij współdzielenie (sys_unshare) |
EBX/RDI = CLONE_FILES, CLONE_FS lub CLONE_NEWNS spośród
flag |
EAX = 0 EAX=błąd EPERM, ENOMEM, EINVAL |
311 | 273 |
Ustaw listę sprawnych futeksów (sys_set_robust_list) |
EBX/RDI = adres pierwszego elementu listy struktur
typu robust_list_head ECX/RSI = rozmiar elementu listy podanej przez EBX/RDI |
EAX = 0 EAX = błąd EINVAL |
312 | 274 |
Pobierz listę sprawnych futeksów (sys_get_robust_list) |
EBX/RDI = PID procesu ECX/RSI = adres zmiennej, która otrzyma adres pierwszego elementu listy struktur typu robust_list_head EDX/RDX = adres zmiennej, która otrzyma rozmiar elementu listy podanej przez ECX/RSI |
EAX = 0 EAX = błąd EPERM, ESRCH, EFAULT |
313 | 275 |
Spleć dane z/do potoku (sys_splice) |
EBX/RDI = wejściowy deskryptor pliku ECX/RSI = offset w pliku wejściowym, skąd czytać dane (0 dla potoków) EDX/RDX = wyjściowy deskryptor pliku ESI/R10 = offset w pliku wyjściowym, dokąd zapisać dane (0 dla potoków) EDI/R8 = maksymalna liczba bajtów do przeniesienia EBP/R9 = flagi |
EAX = liczba przeniesionych bajtów EAX=błąd EBADF, ESPIPE, ENOMEM, EINVAL |
314 | 277 |
Synchronizuj segment pliku z dyskiem (sys_sync_file_range) |
EBX/RDI = deskryptor pliku EDX:ECX/RSI? = początek zakresu danych do synchronizacji / ECX/RSI wskazuje na 64 bity adresu początku danych? EDI:ESI/RDX? = liczba bajtów do zsynchronizowania / EDX/RDX wskazuje na 64-bitową liczbę bajtów do zsynchronizowania? EBP/ESI (odpowiednio) / R10 = flagi synchronizacji |
EAX = 0 EAX=błąd EBADF, EIO, EINVAL, ENOMEM, ENOSPC, ESPIPE |
315 | 276 |
Duplikowanie zawartości potoku (sys_tee) |
EBX/RDI = wejściowy deskryptor pliku ECX/RSI = wyjściowy deskryptor pliku EDX/RDX = maksymalna liczba bajtów do przeniesienia ESI/R10 = flagi (te same, co dla sys_splice) |
EAX = liczba zduplikowanych bajtów EAX=błąd ENOMEM, EINVAL |
316 | 278 |
Spleć strony pamięci do potoku (sys_vmsplice) |
EBX/RDI = wejściowy deskryptor potoku ECX/RSI = adres tablicy struktur iovec EDX/RDX = liczba elementów w tablicy pod [ECX/RSI] ESI/R10 = flagi (te same, co dla sys_splice) |
EAX = liczba bajtów przeniesionych do potoku EAX=błąd EBADF, ENOMEM, EINVAL |
317 | 279 |
Przesuń strony pamięci procesu (sys_move_pages) |
EBX/RDI = PID procesu ECX/RSI = liczba stron do przeniesienia EDX/RDX = adres tablicy adresów stron ESI/R10 = adres tablicy liczb całkowitych określających żądane miejsce dla danej strony EDI/R8 = adres tablicy na liczby całkowite, które otrzymają status wykonanej operacji EBP/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) |
EAX = 0 EAX=błąd E2BIG, EACCES, EFAULT, EINVAL, ENODEV, ENOENT, EPERM, ESRCH |
318 | 309 |
Pobierz procesor, na którym działa wątek (sys_getcpu) |
EBX/RDI = 0 lub adres zmiennej, która otrzyma numer procesora ECX/RSI = 0 lub adres zmiennej, która otrzyma numer węzła NUMA EDX/RDX = adres struktury getcpu_cache, która służyła jako pamięć podręczna dla tej funkcji; nieużywane |
EAX = 0 EAX=błąd EFAULT |
319 | 281 |
Czekaj na deskryptorze pliku epoll (sys_epoll_pwait) |
EBX/RDI = deskryptor epoll ECX/RSI = adres tablicy struktur epoll_event EDX/RDX = maksymalna liczba zdarzeń, na które będziemy czekać ESI/R10 = czas czekania w milisekundach (-1 = nieskończoność) EDI/R8 = adres zestawu sygnałów (tablicy 32 DWORDów), które też przerwą czekanie |
EAX = liczba deskryptorów gotowych EAX=błąd EFAULT, EINTR, EBADF, EINVAL |
320 | 280 |
Zmień znaczniki czasu pliku (sys_utimensat) |
EBX/RDI = deskryptor otwartego katalogu lub wartość AT_FDCWD=-100
oznaczająca katalog bieżący ECX/RSI = adres nazwy pliku EDX/RDX = adres dwuelementowej tablicy struktur timespec, opisujących czas dostępu i zmiany ESI/R10 = flagi: 0 lub AT_SYMLINK_NOFOLLOW=0x100 (nie podążaj za dowiązaniami symbolicznymi) |
EAX = 0 EAX=błąd EACCES, EBADF, EFAULT, EINVAL, ELOOP, ENAMETOOLONG, ENOENT, ENOTDIR, EPERM, EROFS, ESRCH |
321 | 282 |
Stwórz deskryptor pliku do otrzymywania sygnałów (sys_signalfd) |
EBX/RDI = deskryptor: -1, gdy tworzymy nowy lub nieujemny, gdy zmieniamy istniejący ECX/RSI = adres maski sygnałów (sigset), które chcemy otrzymywać |
EAX = deskryptor pliku EAX=błąd EBADF, EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
322 | 283 |
Stwórz nowy czasomierz (sys_timerfd_create) |
EBX/RDI = identyfikator zegara (CLOCK_REALTIME=0 lub CLOCK_MONOTONIC=1) ECX/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) |
EAX = deskryptor pliku EAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
323 | 284 |
Stwórz deskryptor pliku do otrzymywania zdarzeń (sys_eventfd) |
EBX/RDI = wstępna wartość licznika zdarzeń |
EAX = deskryptor pliku EAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
324 | 285 |
Manipulacja przestrzenią pliku (sys_fallocate) |
EBX/RDI = deskryptor pliku ECX/RSI = tryb = FALLOC_FL_KEEP_SIZE (alokuje i zeruje przestrzeń na dysku w podanym zakresie bajtów) = 1 EDX/RDX = offset początku zakresu bajtów w pliku ESI/R10 = liczba bajtów w zakresie |
EAX = liczba deskryptorów gotowych EAX = błąd EFAULT, EINTR, EBADF, EINVAL |
325 | 286 |
Uruchom lub zatrzymaj czasomierz (sys_timerfd_settime) |
EBX/RDI = deskryptor pliku czasomierza ECX/RSI = flagi (0 uruchamia czasomierz względy, TFD_TIMER_ABSTIME=1 - bezwzględny) EDX/RDX = adres struktury itimerspec, zawierającej początkowy czas ESI/R10 = adres struktury itimerspec, która otrzyma aktualny czas |
EAX = 0 EAX=błąd EINVAL, EFAULT, EBADF |
326 | 287 |
Pobierz czas na czasomierzu (sys_timerfd_gettime) |
EBX/RDI = deskryptor pliku czasomierza ECX/RSI = adres struktury itimerspec, która otrzyma aktualny czas |
EAX = 0 EAX=błąd EINVAL, EFAULT, EBADF |
327 | 289 |
Stwórz deskryptor pliku do otrzymywania sygnałów (sys_signalfd4) |
EBX/RDI = deskryptor: -1, gdy tworzymy nowy lub nieujemny, gdy zmieniamy istniejący ECX/RSI = adres maski sygnałów (sigset), które chcemy otrzymywać EDX/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) |
EAX = deskryptor pliku EAX=błąd EBADF, EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
328 | 290 |
Stwórz deskryptor pliku do otrzymywania zdarzeń (sys_eventfd2) |
EBX/RDI = wstępna wartość licznika zdarzeń ECX/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) |
EAX = deskryptor pliku EAX=błąd EINVAL, EMFILE, ENFILE, ENODEV, ENOMEM |
329 | 291 |
Utwórz deskryptor pliku epoll (sys_epoll_create1) |
EBX/RDI = flagi: 0 lub EPOLL_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
EAX = nowy deskryptor pliku EAX = błąd ENOMEM, EINVAL, EMFILE, ENFILE |
330 | 292 |
Zamień deskryptor zduplikowanym deskryptorem pliku (sys_dup3) |
EBX/RDI = deskryptor do zduplikowania ECX/RSI = deskryptor, do którego powinien być przyznany duplikat EDX/RDX = flagi: 0 lub O_CLOEXEC (=02000000 ósemkowo, zamknij w czasie wywołania exec) |
EAX = zduplikowany deskryptor EAX = błąd EBADF, EMFILE, EBUSY, EINTR, EINVAL |
331 | 293 |
Utwórz potok (sys_pipe2) |
EBX/RDI = adres tablicy dwóch DWORDów ECX/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) |
EAX = 0 i pod [EBX/RDI]: deskryptor odczytu z potoku fd(0) pod [EBX/RDI], deskryptor zapisu do potoku
fd(1) pod [EBX/RDI+4] EAX = błąd EFAULT, EMFILE, ENFILE, EINVAL |
332 | 294 |
Inicjalizacja kolejki zdarzeń inotify (sys_inotify_init1) |
EBX/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) |
EAX = deskryptor kolejki EAX = błąd EMFILE, ENFILE, ENOMEM, EINVAL |
333 | 295 |
Odczyt danych do wielu buforów (sys_preadv) |
EBX/RDI = deskryptor otwartego pliku ECX/RSI = adres tablicy struktur iovec, do których zapisać dane EDX/RDX = liczba struktur iovec spod [ECX/RSI] ESI/R10 = numer bajtu, od którego czytać (offset w pliku) |
EAX = liczba odczytanych bajtów EAX = błąd funkcji sys_read, sys_lseek lub EINVAL |
334 | 296 |
Zapis danych z wielu buforów (sys_pwritev) |
EBX/RDI = deskryptor otwartego pliku ECX/RSI = adres tablicy struktur iovec, z których brać dane do zapisania EDX/RDX = liczba struktur iovec spod [ECX/RSI] ESI/R10 = numer bajtu, od którego zapisywać (offset w pliku) |
EAX = liczba zapisanych bajtów EAX = błąd funkcji sys_write, sys_lseek lub EINVAL |
335 | 297 |
Zakolejkuj dane i sygnał dla wątku (sys_rt_tgsigqueueinfo) |
EBX/RDI = ID grupy wątków ECX/RSI = ID wątku EDX/RDX = sygnał do wysłania ESI/R10 = adres struktury siginfo z danymi do wysłania |
EAX = 0 EAX = błąd EAGAIN, EINVAL, EPERM, ESRCH |
336 | 298 |
sys_perf_counter_open |
brak danych |
brak danych |
337 | 299 |
Odbierz wiele wiadomości z gniazda (sys_recvmmsg) |
EBX/RDI = deskryptor otwartego gniazda ECX/RSI = adres tablicy struktur mmsghdr, do których zapisać dane EDX/RDX = liczba struktur mmsghdr spod [ECX/RSI] ESI/R10 = 0 lub zORowane flagi funkcji recvmsg i dodatkowa flaga MSG_WAITFORONE (=0x10000) oznaczająca czekanie na jedną wiadomość EDI/R8 = adres struktury timespec oznaczającej czas czekania lub 0 (czekanie bez końca) |
EAX = liczba otrzymanych wiadomości EAX = błąd funkcji recvmsg lub EINVAL |
338 | 300 |
Utwórz grupę fanotify (sys_fanotify_init) |
EBX/RDI = flagi fanotify ECX/RSI = O_RDONLY, O_WRONLY, O_RDWR, O_LARGEFILE, O_CLOEXEC z bitów dostępu jako flagi zdarzeń |
EAX = nowy deskryptor pliku EAX = błąd EINVAL, EMFILE, ENOMEM, ENOSYS, EPERM |
339 | 301 |
Zmiana znaczników fanotify na obiekcie (sys_fanotify_mark) |
EBX/RDI = deskryptor fanotify ECX/RSI = flagi fanotify_mark mówiące, co zrobić EDX/RDX = maska zdarzeń ESI/R10 = deskryptor obserwowanego obiektu lub katalogu, wzgledem którego brana jest ścieżka EDI/R8 = ścieżka ASCIIZ obserwowanego obiektu (jeśli 0, brany jest deskryptor z ESI/R10) |
EAX = 0 EAX = błąd EBADF, EINVAL, ENOENT, ENOMEM, ENOSPC, ENOSYS, ENOTDIR |
340 | 302 |
Ustaw lub pobierz limity zasobów (sys_prlimit64) |
EBX/RDI = PID procesu (0 = bieżący) ECX/RSI = typ zasobu EDX/RDX = adres struktury rlimit z nowymi limitami ESI/R10 = adres struktury rlimit, która otrzyma bieżące limity |
EAX = 0 EAX = błąd EFAULT, EINVAL, EPERM, ESRCH |
341 | 303 |
Przerób nazwę na uchwyt do pliku względem katalogu (sys_name_to_handle_at) |
EBX/RDI = deskryptor katalogu ECX/RSI = ścieżka do obiektu względem katalogu EDX/RDX = adres do struktury file_handle, która otrzyma wynik ESI/R10 = adres zmiennej, która otrzyma ID systemu plików EDI/R8 = flagi name_to_handle_at (te same, co dla sys_execveat) |
EAX = 0 EAX = błąd openat lub EFAULT, EINVAL, ENOENT, ENOTDIR, EOPNOTSUPP, EOVERFLOW |
342 | 304 |
Otwórz plik poprzez uchwyt (sys_open_by_handle_at) |
EBX/RDI = ID systemu plików lub AT_FDCWD=-100 dla bieżącego katalogu ECX/RSI = adres do struktury file_handle, która zawiera uchwyt do pliku EDX/RDX = flagi open_by_handle_at (te same, co dla sys_open) |
EAX = 0 EAX = błąd openat lub EBADF, EFAULT, EINVAL, ELOOP, EPERM, ESTALE |
343 | 305 |
sys_clock_adjtime |
brak danych |
brak danych |
344 | 306 |
Synchronizuj system plików zawierający dany plik (sys_syncfs) |
EBX/RDI = deskryptor pliku otwartego na systemie plików do synchronizacji |
EAX = 0 EAX = błąd EBADF |
345 | 307 |
Wyślij wiele wiadomości z gniazda (sys_sendmmsg) |
EBX/RDI = deskryptor otwartego gniazda ECX/RSI = adres tablicy struktur mmsghdr, z których brać dane do wysłania EDX/RDX = liczba struktur mmsghdr spod [ECX/RSI] ESI/R10 = 0 lub zORowane flagi funkcji sendmsg |
EAX = liczba wysłanych wiadomości EAX = błąd funkcji sendmsg |
346 | 308 |
Powiąż wątek z przestrzenią nazw (sys_setns) |
EBX/RDI = deskryptor jednego z plików w /proc/[pid]/ns/ ECX/RSI = 0 (oznaczające dowolny typ przestrzeni nazw lub jeden z typów przestrzeni nazw) |
EAX = 0 EAX = błąd EBADF, EINVAL, ENOMEM, EPERM |
347 | 310 |
Czytaj dane innego procesu (sys_process_vm_readv) |
EBX/RDI = PID procesu ECX/RSI = adres tablicy struktur iovec na odczytane dane EDX/RDX = liczba struktur w [ECX/RSI] ESI/R10 = adres tablicy struktur iovec z adresami danych do odczytania EDI/R8 = liczba struktur w [ESI/R10] EBP/R9 = flagi (nieużywane, ustawić na zero) |
EAX = liczba odczytanych bajtów EAX = błąd EINVAL, EFAULT, ENOMEM, EPERM, ESRCH |
348 | 311 |
Zapisz dane w innym procesie (sys_process_vm_writev) |
EBX/RDI = PID procesu ECX/RSI = adres tablicy struktur iovec na dane do zapisania EDX/RDX = liczba struktur w [ECX/RSI] ESI/R10 = adres tablicy struktur iovec z adresami miejsc do zapisania EDI/R8 = liczba struktur w [ESI/R10] EBP/R9 = flagi (nieużywane, ustawić na zero) |
EAX = liczba zapisanych bajtów EAX = błąd EINVAL, EFAULT, ENOMEM, EPERM, ESRCH |
349 | 312 |
Porównaj zasoby 2 procesów (sys_kcmp) |
EBX/RDI = PID pierwszego procesu ECX/RSI = PID drugiego procesu EDX/RDX = typ zasobu do porównania ESI/R10 = ID pierwszego zasobu (zależy od typu) EDI/R8 = ID drugiego zasobu (zależy od typu) |
EAX = 0, gdy dany zasób jest współdzielony w obu procesach EAX = 1, 2, lub 3, gdy dany zasób nie jest współdzielony w obu procesach EAX = błąd EBADF, EINVAL, EPERM, ESRCH |
350 | 313 |
Załaduj moduł jądra z deskryptora pliku (sys_finit_module) |
EBX/RDI = deskryptor otwartego pliku z modułem jądra ECX/RSI = adres łańcucha parametrów dla modułu - nazwa=wartość (ASCIIZ) EDX/RDX = 0 lub zORowane flagi funkcji finit_module |
EAX = 0 EAX = błąd EBADMSG, EBUSY, EFAULT, ENOKEY, ENOMEM, EPERM, EBADF, EFBIG, EINVAL, ENOEXEC |