Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
intro - wprowadzenie do wywola systemowych
OPIS
Ten dzial opisuje wywolania systemowe Linuksa. List wszystkich 164
wywola systemowych obecnych w jdrze 2.0 Linuksa mona znale w
syscalls(2).
Wywo/lywanie bezporednie
W wikszoci przypadkow nie jest konieczne wywolywanie wywola systemowych
bezporednio, ale czasem zdarza si, e jakie przydatna funkcja systemowa
nie jest zaimplementowana w standardowej bibliotece C.
Sk/ladnia
#include <linux/unistd.h>
Makro _syscall
dane wywolanie systemowe
Konfiguracja
Wan rzecz, ktor naley wiedzie o wywolaniu systemowym jest jego
prototyp. Trzeba wiedzie ile posiada ono argumentow, jakie s ich typy
i jaki typ zwraca. Istnieje sze makrodefinicji ulatwiajcych bezporednie
wywolania systemu. Ich skladnia jest nastpujca:
_syscallX(type,name,type1,arg1,type2,arg2,...)
gdzie X jest z zakresu 0-5 i oznacza liczb argumentow
wymaganych przez wywolanie systemowe
type jest zwracanym typem
name jest nazw wywolania systemowego
typeN jest typem N-tego argumentu
argN jest nazw N-tego argumentu
Te makrodefinicje tworz funkcj o nazwie name z podanymi argumentami.
Po zawarciu _syscall() w pliku rodlowym, mona wywolywa wywolanie
systemowe poprzez name.
PRZYK/LAD
#include <stdio.h>
#include <linux/unistd.h> /* dla makra _syscallX */
#include <linux/kernel.h> /* dla struktury sysinfo*/
_syscall1(int, sysinfo, struct sysinfo *, info);
/* Uwaga: jeli kopiowanie odbywa si bezporednio ze rodla nroff,
naley pamita, aby usun dodatkowe znaki `' z printf */
int main(void)
{
struct sysinfo s_info;
int error;
error = sysinfo(&s_info);
printf("code error = %d\n", error);
printf("Uptime = %ds\nLoad: 1 min %d / 5 min %d / 15 min %d\n"
"RAM: total %d / free %d / shared %d\n"
"Memory in buffers = %d\nSwap: total %d / free %d\n"
"Number of processes = %d\n",
s_info.uptime, s_info.loads[0],
s_info.loads[1], s_info.loads[2],
s_info.totalram, s_info.freeram,
s_info.sharedram, s_info.bufferram,
s_info.totalswap, s_info.freeswap,
s_info.procs);
return(0);
}
Przyk/ladowe wyjcie
code error = 0
uptime = 502034s
Load: 1 min 13376 / 5 min 5504 / 15 min 1152
RAM: total 15343616 / free 827392 / shared 8237056
Memory in buffers = 5066752
Swap: total 27881472 / free 24698880
Number of processes = 40
UWAGI
Makra _syscall() NIE tworz prototypu. Moe istnie potrzega stworzenia go
samodzielnie, szczegolnie w przypadku korzystania z C++.
Wywolania systemowe nie musz koniecznie zwraca jedynie dodatnich lub
ujemnych kodow bldu. Trzeba przeczyta rodlo, aby upewni si, jak zwracaj
one bldy. Zazwyczaj jest to standardowy kod bldu ze znakiem ujemnym,
np. -EPERM. Makra _syscall() zwracaj wynik r wywolania systemowego jeli
r jest nieujemne, ale zwracaj -1 i zmieniaj warto errno na -r jeli r
jest ujemne. Kody bldow mona znale w errno(3).
Niektore wywolania systemowe, takie jak mmap, wymagaj wicej ni piciu
argumentow. Jest to osigane poprzez umieszczanie argumentow na stosie i
przekazywanie wskanika do bloku argumentow.
Podczas definiowania wywolania systemowego, typy argumentow MUSZ zosta
przekazane przez warto lub przez wskanik (dla aregatow takich jak
struktury).
ZGODNE Z
W tym rozdziale wystpuj odwolania do ronych wersji Uniksa i standardow
realizowane poprzez skroty. S to:
SVr4 System V Release 4 Unix, opisane w "Programmer's Reference
Manual: Operating System API (Intel processors)" (Prentice-Hall
1992, ISBN 0-13-951294-2)
SVID System V Interface Definition, opisane w "The System V Interface
Definition, Fourth Edition".
POSIX.1
IEEE 1003.1-1990 part 1, aka ISO/IEC 9945-1:1990s, inaczej "IEEE
Portable Operating System Interface for Computing Environments",
wyjanione w "POSIX Programmer's Guide" Donalda Lewine'a
(O'Reilly & Associates, Inc., 1991, ISBN 0-937175-73-0.
POSIX.1b
IEEE Std 1003.1b-1993 (POSIX.1b standard) opisujcy mechanizmy
czasu rzeczywistego w przenonych systemach operacyjnych, inaczej
ISO/IEC 9945-1:1996, wyjanione w "Programming for the real
world - POSIX.4" autorstwa Billa O. Gallmeistera (O'Reilly &
Associates, Inc. ISBN 1-56592-074-0).
SUS, SUSv2
Single Unix Specification. (Rozwijane przez X/Open i The Open
Group. Zobacz take http://www.UNIX-systems.org/version2/ .)
4.3BSD/4.4BSD
Dystrybucje 4.3 i 4.4 systemu Berkeley Unix. 4.4BSD jest zgodny
w gor w stosunku do 4.3.
V7 Version 7, potomek systemow Unix z Bell Labs.
PLIKI
/usr/include/linux/unistd.h
ZOBACZ TAKE
errno(3)
AUTORZY
Nazwiska autorow i warunki kopiowania znajdziesz w naglowku strony man.
Mog by one odmienne w zalenoci od strony.
W tlumaczeniu stron podrcznika man z pakietu man-pages, nalecych do
sekcji 2, w ramach Projektu Tlumaczenia Manuali <http://ptm.linux.pl>
brali udzial (kolejno alfabetyczna):
Przemek Borys <pborys@dione.ids.pl>
Adam Byrtek <alpha@irc.pl>
Andrzej Krzysztofowicz <ankry@mif.pg.gda.pl>
Rafal Lewczuk <R.Lewczuk@elka.pw.edu.pl>
Robert Luberda <robert@debian.org>
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.