Opis funkcji przerwania int 80h: 301-350

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.

Podstawowe funkcje przerwania 80h: 301-350
Numer/ EAX x86-64 RAX Opis ArgumentyZwraca
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



Poprzednia część (klawisz dostępu 3)
Kolejna część (klawisz dostępu 4)
Spis treści off-line (klawisz dostępu 1)
Spis treści on-line (klawisz dostępu 2)
Ułatwienia dla niepełnosprawnych (klawisz dostępu 0)