   #Start Prev Next Contents Funkcje x86-32: 151-200

                   Opis funkcji systemowych syscall: 151-200

   Jesli jakas funkcja zakonczy sie bledem, w 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
   syscall).

   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 syscall: 151-200

   Numer/ RAX Opis Argumenty Zwraca
   151
   Zablokowanie calej pamieci procesu (sys_mlockall)
   RDI = flagi blokowania pamieci
   RAX = 0
   RAX = blad EINVAL, ENOMEM, EAGAIN, EPERM
     _________________________________________________________________

   152
   Odblokowanie calej pamieci procesu (sys_munlockall)
   nic
   RAX = 0
   RAX = blad.
     _________________________________________________________________

   153
   Wirtualnie odlacz biezacy terminal (sys_vhangup)
   nic
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   154
   Zmien tablice LDT (sys_modify_ldt)
   RDI = numer funkcji
   RSI = adres miejsca na przechowanie danych
   RDX = liczba bajtow obszaru pod [RSI]
   RAX = liczba przeczytanych bajtow lub 0 (gdy zapisywano)
   RAX = blad EINVAL, ENOSYS, EFAULT
     _________________________________________________________________

   155
   Zmien glowny system plikow/katalog (sys_pivot_root)
   RDI = adres lancucha znakow - nowy glowny katalog biezacego procesu
   RSI = adres lancucha znakow - otrzyma stary glowny katalog biezacego
   procesu
   RAX = 0
   RAX = blad EBUSY, EINVAL, EPERM, ENOTDIR + bledy sys_stat
     _________________________________________________________________

   156
   Zmien parametry jadra (sys_sysctl)
   RDI = adres struktury sysctl_args
   RAX = 0
   RAX = blad EPERM, ENOTDIR, EFAULT
     _________________________________________________________________

   157
   Dzialania na procesie (sys_prctl)
   RDI = opcja
   RSI, RDX, R10, R8 = argumenty
   RAX = 0 lub 1
   RAX = blad EINVAL
     _________________________________________________________________

   158
   Ustaw stan watku zalezny od architektury (sys_arch_prctl)
   RDI = kod podfunkcji
   RSI = parametr podfunkcji (wartosc do wstawienia lub adres zmiennej w
   przypadku pobierania)
   RAX = 0
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   159
   Dopasowanie zegara w jadrze (sys_adjtimex)
   RDI = adres struktury timex
   RAX = stan zegara (patrz timex)
   RAX = blad EINVAL, EPERM, EFAULT
     _________________________________________________________________

   160
   Ustaw limity zasobow (sys_setrlimit)
   RDI = numer zasobu
   RSI = adres struktury rlimit
   RAX = 0
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

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

   162
   Zapisz pamiec podreczna na dysku (sys_sync)
   nic
   RAX zawsze = 0 i nie ma zadnych bledow
     _________________________________________________________________

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

   164
   Ustaw czas (sys_settimeofday)
   RDI = adres struktury timeval
   RSI = adres struktury timezone
   RAX = 0
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   165
   Montowanie systemu plikow (sys_mount)
   RDI = adres nazwy urzadzenia/pliku specjalnego
   RSI = adres sciezki do punktu montowania
   RDX = adres nazwy systemu plikow
   R10 = flagi montowania
   R8 = adres dodatkowych danych, niezalezne od urzadzenia
   RAX = 0
   RAX = blad - kazdy, ktory moze sie zdarzyc w systemie plikow lub
   jadrze
     _________________________________________________________________

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

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

   168
   Wylaczenie pliku wymiany (sys_swapoff)
   RDI = adres sciezki i nazwy pliku/urzadzenia swap
   RAX = 0
   RAX = blad
     _________________________________________________________________

   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 = blad
     _________________________________________________________________

   170
   Ustaw nazwe hosta dla systemu (sys_sethostname)
   RDI = adres nazwy hosta
   RSI = dlugosc nazwy
   RAX = 0
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   171
   Ustal nazwe domeny (sys_setdomainname)
   RDI = adres lancucha znakow, zawierajacego domene
   RSI = dlugosc tego lancucha znakow
   RAX = 0
   RAX = blad EINVAL, EPERM, EFAULT
     _________________________________________________________________

   172
   Ustaw prawa dostepu do wszystkich portow (sys_iopl)
   RDI = poziom IOPL od 0 (normalny proces) do 3
   RAX = 0
   RAX = blad
     _________________________________________________________________

   173
   Zmien prawa dostepu do portow (sys_ioperm)
   RDI = poczatkowy numer portu
   RSI = liczba bajtow, ktore bedzie mozna wyslac/odebrac
   RDX = koncowy numer portu
   RAX = 0
   RAX = blad
     _________________________________________________________________

   174
   Utworz wpis ladowalnego modulu jadra (sys_create_module)
   RDI = adres nazwy modulu
   RSI = dlugosc nazwy
   RAX = adres modulu w jadrze
   RAX = blad EINVAL, EPERM, EFAULT, EEXIST, ENOMEM
     _________________________________________________________________

   175
   Inicjalizacja modulu jadra (sys_init_module)
   RDI = adres nazwy modulu
   RSI = adres struktury module
   RAX = 0
   RAX = blad EINVAL, EPERM, EFAULT, ENOENT, EBUSY
     _________________________________________________________________

   176
   Usun wpis nieuzywanego modulu jadra (sys_delete_module)
   RDI = adres nazwy modulu (0 oznacza usuniecie wpisow wszystkich
   nieuzywanych modulow, ktore mozna usunac automatycznie)
   RAX = 0
   RAX = blad EINVAL, EPERM, EFAULT, ENOENT, EBUSY
     _________________________________________________________________

   177
   Pobierz symbole eksportowane przez jadro i moduly
   (sys_get_kernel_syms)
   RDI = adres struktury kernel_sym (0 oznacza, ze chcemy tylko pobrac
   liczbe symboli)
   RAX = liczba symboli
   RAX = blad EINVAL, EPERM, EFAULT, ENOENT, EBUSY
     _________________________________________________________________

   178
   Zapytaj o modul (sys_query_module)
   RDI = adres nazwy modulu lub NULL (jadro)
   RSI = numer podfunkcji
   RDX = adres bufora
   R10 = rozmiar bufora
   R8 = adres DWORDa
   RAX = 0
   RAX = blad EFAULT, ENOSPC, EINVAL, ENOENT
     _________________________________________________________________

   179
   Zarzadzanie limitami dyskowymi (sys_quotactl)
   RDI = komenda limitu
   RSI = adres nazwy pliku urzadzenia blokowego, ktory ma byc zarzadzany
   RDX = identyfikator UID lub GID
   R10 = adres dodatkowej struktury danych (zalezy od komendy w RDI)
   RAX = 0
   RAX = blad 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 = blad
     _________________________________________________________________

   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 watku (sys_gettid)
   nic
   RAX = id watku
     _________________________________________________________________

   187
   Czytaj kilka stron pliku z wyprzedzeniem do pamieci podrecznej
   (sys_readahead)
   RDI = deskryptor pliku
   RSI = miejsce w pliku, od ktorego zaczac
   RDX = liczba bajtow do przeczytania
   RAX = EBADF, gdy blad
     _________________________________________________________________

   188
   Ustaw wartosc atrybutu rozszerzonego (sys_setxattr)
   RDI = adres sciezki pliku
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   R8 = flaga (1=utworz, 2=zamien)
   RAX = 0
   RAX = blad
     _________________________________________________________________

   189
   Ustaw wartosc atrybutu rozszerzonego (sys_lsetxattr)
   RDI = adres sciezki pliku, funkcja nie podaza za dowiazaniami
   symbolicznymi
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   R8 = flaga (1=utworz, 2=zamien)
   RAX = 0
   RAX = blad
     _________________________________________________________________

   190
   Ustaw wartosc atrybutu rozszerzonego (sys_fsetxattr)
   RDI = deskryptor pliku
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   R8 = flaga (1=utworz, 2=zamien)
   RAX = 0
   RAX = blad
     _________________________________________________________________

   191
   Pobierz wartosc atrybutu rozszerzonego (sys_getxattr)
   RDI = adres sciezki pliku
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   RAX = 0
   RAX = blad
     _________________________________________________________________

   192
   Pobierz wartosc atrybutu rozszerzonego (sys_lgetxattr)
   RDI = adres sciezki pliku, funkcja nie podaza za dowiazaniami
   symbolicznymi
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   RAX = 0
   RAX = blad
     _________________________________________________________________

   193
   Pobierz wartosc atrybutu rozszerzonego (sys_fgetxattr)
   RDI = deskryptor pliku
   RSI = adres nazwy atrybutu
   RDX = wartosc atrybutu
   R10 = dlugosc atrybutu
   RAX = 0
   RAX = blad
     _________________________________________________________________

   194
   Pobierz liste nazw atrybutow rozszerzonych pliku (sys_listxattr)
   RDI = adres sciezki pliku
   RSI = adres tablicy na nazwy
   RDX = dlugosc tablicy
   RAX = 0
   RAX = blad
     _________________________________________________________________

   195
   Pobierz liste nazw atrybutow rozszerzonych pliku (sys_llistxattr)
   RDI = adres sciezki pliku, funkcja nie podaza za dowiazaniami
   symbolicznymi
   RSI = adres tablicy na nazwy
   RDX = dlugosc tablicy
   RAX = 0
   RAX = blad
     _________________________________________________________________

   196
   Pobierz liste nazw atrybutow rozszerzonych pliku (sys_flistxattr)
   RDI = deskryptor pliku
   RSI = adres tablicy na nazwy
   RDX = dlugosc tablicy
   RAX = 0
   RAX = blad
     _________________________________________________________________

   197
   Usun atrybut rozszerzony pliku (sys_removexattr)
   RDI = adres sciezki pliku
   RSI = adres nazwy atrybutu do usuniecia
   RAX = 0
   RAX = blad
     _________________________________________________________________

   198
   Usun atrybut rozszerzony pliku (sys_lremovexattr)
   RDI = adres sciezki pliku, funkcja nie podaza za dowiazaniami
   symbolicznymi
   RSI = adres nazwy atrybutu do usuniecia
   RAX = 0
   RAX = blad
     _________________________________________________________________

   199
   Usun atrybut rozszerzony pliku (sys_fremovexattr)
   RDI = deskryptor pliku
   RSI = adres nazwy atrybutu do usuniecia
   RAX = 0
   RAX = blad
     _________________________________________________________________

   200
   Zabij pojedyncze zadanie (sys_tkill)
   RDI = PID zadania (niekoniecznie calego procesu)
   RSI = numer sygnalu do wyslania
   RAX = 0
   RAX = blad EINVAL, ESRCH, EPERM
     _________________________________________________________________

   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)
