   #Start Prev Next Contents Funkcje x86-64: 51-100

                    Opis funkcji przerwania int 80h: 51-100

   Jesli jakas funkcja zakonczy sie bledem, w EAX/RAX zwracana jest
   wartosc ujemna z przedzialu od -4096 do -1 wlacznie.

   Z drugiej strony, opisy funkcji na stronach manuala mowia, ze zwracane
   jest -1, a wartosc bledu jest zapisywana do zmiennej errno z
   biblioteki GLIBC. Dzieje sie tak tylko w przypadku, gdy korzystamy z
   interfejsu jezyka C (czyli deklarujemy i uruchamiamy zewnetrzne
   funkcje odpowiadajace wywolaniom systemowym i linkujemy nasz program z
   biblioteka jezyka C), a nie bezposrednio z wywolan systemowych (czyli
   przerwania int 80h).

   Najbardziej aktualne informacje o funkcjach systemowych mozna znalezc
   zazwyczaj w sekcji 2 (lub 3) manuala, na przyklad man 2 open.

   Najnowsze wersje jadra mozna znalezc na www.kernel.org, a pliki z
   lista funkcji i ich numerow sa pod sciezkami:
     * arch/x86/include/asm/unistd_{32,64}.h
     * arch/x86/syscalls/syscall_{32,64}.tbl
     * arch/x86/entry/syscalls/syscall_{32,64}.tbl

   Najnowsze wersje stron manuala mozna znalezc tu:
   www.kernel.org/pub/linux/docs/man-pages.

   Napis ASCIIZ oznacza lancuch znakow ASCII zakonczony znakiem/bajtem
   Zerowym.

   Jesli potrzeba, przy kazdej funkcji jest odnosnik do opisu argumentow
   i innych dodatkowych informacji: typow danych, wartosci bledow,
   mozliwych wartosci parametrow itp.

   CAPTION: Podstawowe funkcje przerwania 80h: 51-100

   Numer/ EAX x86-64 RAX Opis Argumenty Zwraca
   51
   163
   Wlacz/wylacz zapisywanie konczonych procesow (sys_acct)
   EBX/RDI = adres nazwy pliku, gdzie ma byc zapisywana informacja o
   konczonych procesach lub NULL, gdy chcemy wylaczyc takie zapisywanie.
   EAX = 0
   EAX = blad ENOSYS, ENOMEM, EPERM, EACCES, EIO, EUSERS
     _________________________________________________________________

   52
   166
   Odmontowanie systemu plikow 2 (sys_umount2)
   EBX/RDI = adres nazwy zamontowanego pliku specjalnego/katalogu ASCIIZ
   ECX/RSI = flaga = 1, by sila odmonotwac, inaczej 0
   EAX = 0
   EAX = blad - kazdy zwiazany z systemem plikow
     _________________________________________________________________

   53
   -
   Funkcja systemowa sys_lock (porzucone)
   --nieuzywane od 2.0--
   zawsze EAX = -1
     _________________________________________________________________

   54
   16
   Manipulacja urzadzeniem znakowym (sys_ioctl)
   EBX/RDI = deskryptor pliku
   ECX/RSI = kod komendy (man 2 ioctl_list)
   EDX/RDX = adres zapisywalnego obszaru danych lub innej struktury,
   zalezy od komendy
   EAX = 0
   EAX = blad EBADF, EFAULT, EINVAL, ENOTTY
     _________________________________________________________________

   55
   72
   Kontrola nad deskryptorem pliku (sys_fcntl)
   EBX/RDI = deskryptor pliku
   ECX/RSI = kod komendy
   EDX/RDX zalezy od komendy
   EAX zalezy od komendy
   EAX = blad EACCES, EAGAIN, EBADF, EDEADLK, EFAULT, EINTR, EINVAL,
   EMFILE, ENOLOCK, EPERM
     _________________________________________________________________

   56
   -
   Funkcja systemowa sys_mpx (porzucone)
   --nieuzywane od 2.0--
   zawsze EAX = -1
     _________________________________________________________________

   57
   109
   Ustaw ID grupy procesu (sys_setpgid)
   EBX/RDI = ID procesu (PID)
   ECX/RSI = ID grupy
   EAX = 0
   EAX = blad EINVAL, EPERM, ESRCH
     _________________________________________________________________

   58
   libc
   -
   Pobierz/ustaw limity zasobow (sys_ulimit)
   --nieuzywane (zamiast tego uzywaj getrlimit, setrlimit, sysconf)--
   man 3 ulimit
   EBX/RDI = komenda, patrz: sys_ulimit
   ECX/RSI = nowylimit
   EAX = aktualny limit
   EAX = blad
     _________________________________________________________________

   59
   -
   Funkcja systemowa sys_oldolduname (porzucone)


     _________________________________________________________________

   60
   95
   Ustaw maske uprawnien przy tworzeniu plikow (sys_umask)
   EBX/RDI = maska, patrz prawa dostepu / tryb
   Gdy tworzymy plik o uprawnieniach X, naprawde ma on uprawnienia X AND
   (NOT umask)
   EAX = poprzednia umask
     _________________________________________________________________

   61
   161
   Zmien katalog glowny (sys_chroot)
   EBX/RDI = adres nazwy/sciezki nowego katalogu glownego
   EAX = 0
   EAX = blad - kazdy zalezny od systemu plikow
     _________________________________________________________________

   62
   libc
   136
   Informacje o zamontowanym systemie plikow (sys_ustat)
   --zamiast tego, uzywaj statfs--
   EBX:ECX?/RDI = numer glowny:poboczny urzadzenia / EBX/RDI wskazuje na
   64 bity numeru urzadzenia
   EDX/ECX (odpowiednio) / RSI = adres struktury ustat
   EAX = 0
   EAX = blad EFAULT, EINVAL, ENOSYS
     _________________________________________________________________

   63
   33
   Zamien deskryptor zduplikowanym deskryptorem pliku (sys_dup2)
   EBX/RDI = deskryptor do zduplikowania
   ECX/RSI = deskryptor, do ktorego powinien byc przyznany duplikat
   EAX = zduplikowany deskryptor
   EAX = blad EBADF, EMFILE
     _________________________________________________________________

   64
   110
   Pobierz PID procesu rodzica (sys_getppid)
   nic
   EAX = PID rodzica
     _________________________________________________________________

   65
   111
   Pobierz ID grupy procesu rodzica (sys_getpgrp)
   nic
   EAX = GID rodzica
   EAX=blad EINVAL, EPERM, ESRCH
     _________________________________________________________________

   66
   112
   Stworz sesje, ustaw ID grupy (sys_setsid)
   nic
   EAX = ID procesu uruchamiajacego
   EAX=blad EPERM
     _________________________________________________________________

   67
   -
   Pobierz/ustal procedure obslugi sygnalu (sys_sigaction)
   EBX/RDI = numer sygnalu
   ECX/RSI = adres struktury sigaction opisujaca biezaca procedure
   EDX/RDX = adres struktury sigaction opisujaca stara procedure
   EAX = 0
   EAX=blad EINVAL, EINTR, EFAULT
     _________________________________________________________________

   68
   -
   Pobierz maske sygnalow procesu (sys_sgetmask)
   --przestarzale (zamiast tego uzywaj sys_sigprocmask)--
   EAX = maska sygnalow biezacego procesu
     _________________________________________________________________

   69
   -
   Ustaw maske sygnalow procesu (sys_ssetmask)
   --przestarzale (zamiast tego uzywaj sys_sigprocmask)--
   EBX/RDI = nowa maska sygnalow procesu
   EAX = poprzednia maska sygnalow
     _________________________________________________________________

   70
   113
   Ustaw realny i efektywny ID uzytkownika (sys_setreuid)
   EBX/RDI = realny ID uzytkownika (UID)
   ECX/RSI = efektywny UID
   EAX = 0
   EAX = blad EPERM
     _________________________________________________________________

   71
   114
   Ustaw realny i efektywny ID grupy (sys_setregid)
   EBX/RDI = realny ID grupy (GID)
   ECX/RSI = efektywny GID
   EAX = 0
   EAX = blad EPERM
     _________________________________________________________________

   72
   -
   Zastapienie dla sigpause - sys_sigsuspend
   EBX/RDI = adres nowej maski sygnalowej procesu - struktury sigset_t
   EAX = 0
   EAX = blad
     _________________________________________________________________

   73
   -
   Pobierz trwajace blokujace sygnaly (sys_sigpending)
   EBX/RDI = adres maski sygnalow - struktury sigset_t
   EAX = 0
   EAX = blad
     _________________________________________________________________

   74
   170
   Ustaw nazwe hosta dla systemu (sys_sethostname)
   EBX/RDI = adres nazwy hosta
   ECX/RSI = dlugosc nazwy
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   75
   160
   Ustaw limity zasobow (sys_setrlimit)
   EBX/RDI = numer zasobu
   ECX/RSI = adres struktury rlimit
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   76
   97
   Pobierz limity zasobow (sys_getrlimit)
   EBX/RDI = numer zasobu
   ECX/RSI = adres struktury rlimit
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   77
   98
   Pobierz zuzycie zasobow (sys_getrusage)
   EBX/RDI = numer uzytkownika (who)
   ECX/RSI = adres struktury rusage
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   78
   96
   Pobierz czas (sys_gettimeofday)
   EBX/RDI = adres struktury timeval
   ECX/RSI = adres struktury timezone
   RAX = 0 i wynik zapisany w strukturach
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   79
   164
   Ustaw czas (sys_settimeofday)
   EBX/RDI = adres struktury timeval
   ECX/RSI = adres struktury timezone
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   80
   115
   Pobierz liczbe dodatkowych grup (sys_getgroups)
   EBX/RDI = rozmiar tablicy z ECX/RSI
   ECX/RSI = adres tablicy, gdzie zostana zapisane GID-y (DWORDY) grup
   dodatkowych
   EAX = liczba dodatkowych grup procesu
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   81
   116
   Ustaw liczbe dodatkowych grup (sys_setgroups)
   EBX/RDI = rozmiar tablicy z ECX/RSI
   ECX/RSI = adres tablicy, gdzie zawierajaca GID-y (DWORDY)
   EAX = 0
   EAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   82
   23
   Oczekiwanie zmiany stanu deskryptora(ow) (sys_select)
   EBX/RDI = najwyzszy numer sposrod deskryptorow + 1
   ECX/RSI = adres tablicy deskryptorow sprawdzanych, czy mozna z nich
   czytac
   EDX/RDX = adres tablicy deskryptorow sprawdzanych, czy mozna do nich
   pisac
   ESI/R10 = adres tablicy deskryptorow sprawdzanych, czy nie wystapil u
   nich wyjatek
   EDI/R8 = adres struktury timeval zawierajaca maksymalny czas
   oczekiwania
   EAX = calkowita liczba deskryptorow, ktora pozostala w tablicach
   EAX = 0, gdy skonczyl sie czas
   EAX = blad EBADF, EINTR, EINVAL, ENOMEM
     _________________________________________________________________

   83
   88
   Stworz dowiazanie symboliczne do pliku (sys_symlink)
   EBX/RDI = adres nazwy pliku ASCIIZ
   ECX/RSI = adres nazwe linku ASCIIZ
   EAX = 0
   EAX = bledy zwiazane z uprawnieniami lub systemem plikow
     _________________________________________________________________

   84
   -
   Funkcja systemowa sys_oldlstat (porzucone)


     _________________________________________________________________

   85
   89
   Przeczytaj zawartosc linku symbolicznego (sys_readlink)
   EBX/RDI = adres nazwy dowiazania symbolicznego ASCIIZ
   ECX/RSI = adres bufora, ktory otrzyma przeczytana informacje
   EDX/RDX = dlugosc bufora
   EAX = liczba przeczytanych znakow
   EAX = blad
     _________________________________________________________________

   86
   134
   Wybierz wspoldzielona biblioteke (sys_uselib)
   EBX/RDI = adres nazwy biblioteki ASCIIZ
   EAX = 0
   EAX = blad EACCES, ENOEXEC
     _________________________________________________________________

   87
   167
   Uruchomienie pliku wymiany (sys_swapon)
   EBX/RDI = adres sciezki do pliku/urzadzenia swap
   ECX/RSI = flagi wymiany
   EAX = 0
   EAX = blad
     _________________________________________________________________

   88
   169
   Reboot systemu (sys_reboot)
   EBX/RDI = pierwsza liczba magiczna = 0FEE1DEADh
   ECX/RSI = druga liczba magiczna = 672274793 lub 85072278 lub 369367448
   EDX/RDX = flaga
   ESI/R10 = adres dodatkowego argumentu (tylko przy RESTART2)
   EAX = 0
   EAX = blad
     _________________________________________________________________

   89
   -
   Czytaj katalog (sys_readdir)
   EBX/RDI = deskryptor otwartego katalogu
   ECX/RSI = adres struktury dirent
   EDX/RDX = liczba struktur do odczytania (ignorowane, czytana jest 1
   struktura)
   EAX = 1
   EAX = 0 na koncu katalogu
   EAX = blad
     _________________________________________________________________

   90
   9
   Mapuj plik/urzadzenie do pamieci (sys_mmap)
   -- zgodne z man 2 mmap--
   EBX/RDI = proponowany adres poczatkowy
   ECX/RSI = dlugosc mapowanego obszaru
   EDX/RDX = ochrona
   ESI/R10 = flagi mapowania
   EDI/R8 = deskryptor mapowanego pliku, jesli mapowanie nie jest
   anonimowe
   EBP/R9 = offset poczatku mapowanych danych w pliku
   EAX = rzeczywisty adres mapowania
   EAX = blad
     _________________________________________________________________

   91
   11
   Odmapuj plik/urzadzenie z pamieci (sys_munmap)
   EBX/RDI = adres poczatkowy obszaru
   ECX/RSI = liczba bajtow
   EAX = 0
   EAX = blad
     _________________________________________________________________

   92
   76
   Skroc plik (sys_truncate)
   EBX/RDI = adres nazwy pliku ASCIIZ
   ECX/RSI = liczba bajtow, do ktorej ma zostac skrocony plik
   EAX = 0
   EAX = blad
     _________________________________________________________________

   93
   77
   Skroc plik (sys_ftruncate)
   EBX/RDI = deskryptor pliku otwartego do zapisu
   ECX/RSI = liczba bajtow, do ktorej ma zostac skrocony plik
   EAX = 0
   EAX = blad
     _________________________________________________________________

   94
   91
   Zmiana uprawnien (sys_fchmod)
   EBX/RDI = deskryptor otwartego pliku
   ECX/RSI = nowe prawa dostepu
   EAX = 0
   EAX = blad
     _________________________________________________________________

   95
   93
   Zmiana wlasciciela (sys_fchown)
   EBX/RDI = deskryptor otwartego pliku
   ECX/RSI = nowy numer uzytkownika
   EDX/RDX = nowy numer grupy
   EAX = 0
   EAX = blad
     _________________________________________________________________

   96
   140
   Podaj priorytet szeregowania zadan (sys_getpriority)
   EBX/RDI = czyj priorytet zmieniamy
   ECX/RSI = identyfikator procesu, grupy procesow lub uzytkownika,
   ktorego priorytet zmieniamy (0=biezacy)
   EAX = aktualny priorytet dla wybranego obiektu (od 1 do 40)
     _________________________________________________________________

   97
   141
   Ustaw priorytet szeregowania zadan (sys_setpriority)
   EBX/RDI = czyj priorytet zmieniamy
   ECX/RSI = identyfikator procesu, grupy procesow lub uzytkownika,
   ktorego priorytet zmieniamy (0=biezacy)
   EDX/RDX = nowy priorytet -20...19
   EAX = 0
   EAX = blad
     _________________________________________________________________

   98
   -
   Profilowanie czasu wykonywania (sys_profil)
   --man 3 profil--
   EBX/RDI = adres tablicy WORDow
   ECX/RSI = dlugosc tej tablicy, na ktora pokazuje EBX/RDI
   EDX/RDX = offset poczatkowy
   ESI/R10 = mnoznik
   zawsze EAX = 0
     _________________________________________________________________

   99
   137
   Pobierz statystyki systemu plikow (sys_statfs)
   EBX/RDI = adres nazwy dowolnego pliku w zamontowanym systemie plikow
   ECX/RSI = adres struktury statfs
   EAX = 0
   EAX = blad
     _________________________________________________________________

   100
   138
   Pobierz statystyki systemu plikow (sys_fstatfs)
   EBX/RDI = deskryptor dowolnego otwartego pliku w zamontowanym systemie
   plikow
   ECX/RSI = adres struktury statfs
   EAX = 0
   EAX = blad
     _________________________________________________________________

   Poprzednia czesc (klawisz dostepu 3)
   Kolejna czesc (klawisz dostepu 4)
   Spis tresci off-line (klawisz dostepu 1)
   Spis tresci on-line (klawisz dostepu 2)
   Ulatwienia dla niepelnosprawnych (klawisz dostepu 0)
