NAZWA¶
intro - wprowadzenie do wywołań systemowych
OPIS¶
Dział 2. podręcznika opisuje wywołania systemowe Linuksa.
Wywołanie systemowe jest punktem dostępu do jądra Linux.
Nie są one zwykle wywoływane bezpośrednio:
większość wywołań systemowych posiada
odpowiednie funkcje obudowujące biblioteki C, które
przeprowadzają wymagane kroki (np. przejście do trybu
jądra), aby je wywołać. Dlatego wykonanie
wywołania systemowego wygląda tak samo, jak wywołanie
zwykłej funkcji bibliotecznej.
W wielu przypadkach funkcja opakowujące biblioteki C nie czyni nic
więcej oprócz:
- *
- skopiowania argumentów i unikalnego numeru wywołania
systemowego do rejestrów w miejsce, gdzie spodziewa się ich
jądro;
- *
- przejścia do trybu jądra, gdzie jądro wykonuje
faktyczną pracę wywołania systemowego
- *
- i ustawienia errno, jeśli wywołanie systemowe
zwróci numer błędu gdy jądro powróci
CPU do trybu użytkownika.
Jednak w kilku przypadkach funkcja opakowująca może czynić
więcej np. wykonując pewne wstępne przetworzenie
argumentów przed przejściem do trybu jądra lub
wykonując przetworzenie wartości zwracanych przez
wywołanie systemowego. Jeśli tak jest, to strony
podręcznika w sekcji 2 zwykle starają się
poinformować o detalach interfejsu biblioteki (zwykle GNU) C oraz
surowego wywołania systemowego. Najczęściej
główny rozdział OPIS skupia się na
wywołaniu bibliotecznym C, a różnice wywołania
systemowego są opisane w sekcji UWAGI.
Lista wywołań systemowych Linuksa jest dostępna w
podręczniku
syscalls(2).
WARTOŚĆ ZWRACANA¶
W przypadku błędu, większość
wywołań zwraca ujemną liczbę błędu
(tzn. ujemną wartość jednej ze stałych opisanych w
errno(3)). Opakowania biblioteki C ukrywają te detale przed
wywołującym: gdy wywołanie systemowe zwróci
wartość ujemną, opakowanie kopiuje wartość
absolutną do zmiennej
errno i zwraca -1 jako
wartość zwracaną przez opakowanie.
Wartość zwracana przez udane wywołanie systemowe
zależy od niego. Wiele wywołań zwraca przy powodzeniu 0,
lecz niektóre zwracają również wartości
niezerowe przy pomyślnym wywołaniu systemowym. Detale są
opisane w poszczególnych stronach podręcznika.
W niektórych przypadkach, programista musi zdefiniować testowe
makro funkcji aby pozyskać deklarację wywołania
systemowego z pliku nagłówkowego opisanego w rozdziale
SKŁADNIA strony podręcznika systemowego (gdy jest to wymagane,
takie makra muszą być zdefiniowane przez
dołączeniem
jakichkolwiek plików
nagłówkowych). W takich sytuacjach, wymagane makro jest opisane
w odpowiednim podręczniku systemowym. Więcej informacji o
testowych makrach funkcji można znaleźć w
feature_test_macros(7).
ZGODNE Z¶
Poszczególne zwroty i skróty używane do określenia
wariantów Uniksa i standardów, do których
wywołania w tym dziale się stosują. Patrz
standards(7).
UWAGI¶
Bezpośrednie wywoływanie¶
W większości przypadków nie ma potrzeby
bezpośredniego wywoływania wywołań systemowych,
lecz czasem zdarza się, że jakaś przydatna funkcja
systemowa nie ma zaimplementowanego przydatnej funkcji opakowującej w
standardowej bibliotece C. Programista musi wówczas
wywołać wywołanie systemowe ręcznie, za
pomocą
syscall(2). Dawniej można było
użyć również jednego z makr _syscall, opisanych w
_syscall(2).
Autorzy i prawa autorskie¶
Nagłówek źródeł każdej strony
podręcznika systemowego zawiera informacje o autorach i warunkach
wykorzystania. Mogą się one różnić, w
zależności od strony.
ZOBACZ TAKŻE¶
_syscall(2),
syscall(2),
syscalls(2),
errno(3),
intro(3),
capabilities(7),
credentials(7),
feature_test_macros(7),
mq_overview(7),
path_resolution(7),
pipe(7),
pty(7),
sem_overview(7),
shm_overview(7),
signal(7),
socket(7),
standards(7),
svipc(7),
symlink(7),
time(7)
O STRONIE¶
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux
man-pages. Opis projektu, informacje dotyczące zgłaszania
błędów, oraz najnowszą wersję
oryginału można znaleźć pod adresem
http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE¶
Autorami polskiego tłumaczenia niniejszej strony podręcznika man
są: Adam Byrtek (PTM) <alpha@irc.pl>, Andrzej M. Krzysztofowicz
(PTM) <ankry@green.mf.pg.gda.pl> i Michał Kułach
<michal.kulach@gmail.com>.
Polskie tłumaczenie jest częścią projektu
manpages-pl; uwagi, pomoc, zgłaszanie błędów na
stronie
http://sourceforge.net/projects/manpages-pl/. Jest zgodne z
wersją
3.71 oryginału.