Provided by: manpages-pl-dev_20060617-3_all bug

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.