File: intro.2

package info (click to toggle)
manpages-de 0.4-8
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,808 kB
  • ctags: 4
  • sloc: sh: 7,666; makefile: 60
file content (161 lines) | stat: -rw-r--r-- 5,225 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
.\" Copyright (c) 1993 Michael Haardt <u31b3hs@pool.informatik.rwth-aachen.de>, Fri Apr  2 11:32:09 MET DST 1993
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" Tue Jul  6 12:42:46 MDT 1993 (dminer@nyx.cs.du.edu)
.\" Added "Calling Directly" and supporting paragraphs
.\"
.\" Modified Sat Jul 24 15:19:12 1993 by Rik Faith (faith@cs.unc.edu)
.\"
.\" Modified 21 Aug 1994 by Michael Chastain (mec@shell.portal.com):
.\"   Added explanation of arg stacking when 6 or more args.
.\"
.\" Modified 10 June 1995 by Andries Brouwer (aeb@cwi.nl)
.\" Translated into german by Martin Schulze (joey@infodrom.north.de)
.\"
.TH INTRO 2 "22. Mai 1996" "Linux" "Systemaufrufe"
.SH BEZEICHNUNG
intro \- Einfhrung in Systemaufrufe
.SH BESCHREIBUNG
Dieses Kapitel beschreibt Systemaufrufe unter Linux.
.SS "Direkter Aufruf"
In den meisten Fllen ist es nicht ntig, direkt auf die Systemfunktionen
zuzugreifen, aber ab und an stt man an einen Punkt, an dem die
Standard C Bibliothek keinen netten Systemaufrufe fr Dich
implementiert hat.
.SS "bersicht"
.B #include <linux/unistd.h>

Das _syscall Makro erzeugt einen Systemaufruf.

.SS Einrichtung
Eine wichtige Sache, die man ber Systemaufrufe wissen sollte, ist
sein Prototyp.  Man mu die Anzahl der Argumente, dessen Typen
und den Rckgabewert kennen.  Es gibt sechs Makros, die den Aufruf in
das System einfacher gestalten.  Sie haben die folgende Form:
.sp
.RS
.RI _syscall X ( type , name , type1 , arg1 , type2 , arg2 ,...)
.RS
.HP
wobei 
.IR X ,
von 0\-5, die Anzahl der Argumente ist, die der
Systemaufruf bentigt,
.HP
.I type
der Rckgabewert des Systemaufrufs ist,
.HP
.I name
der Name des Systemaufrufs ist,
.HP
.I typeN
der Typ des Nten Arguments ist und
.HP
.I argN
der Name des Nten Arguments ist.
.RE
.RE
.sp
Diese Makros erzeugen eine Funktion
.IR name ,
mit den angegebenen Argumenten.  Von der Stelle, an der das _syscall()
Makro im Programmtext verwendet wird, kann der Systemaufruf mit
.I name
aufgerufen werden.

.SH BEISPIEL
.nf
.sp
#include <stdio.h>
#include <linux/unistd.h>	/* fr _syscallX Macros etc. */
#include <linux/kernel.h>	/* fr das struct sysinfo */

_syscall1(int, sysinfo, struct sysinfo *, info);

/* Beachte: Wenn direkt vom nroff Quellcode kopiert wird, mssen die
zustzlichen Backslashes in den printf-Anweisungen entfernt werden. */

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: gesamt %d / frei %d / shared %d\\n"
                "Speicher in Puffern = %d\\nSwap: gesamt %d / frei %d\\n"
                "Anzahl der Prozesse = %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);
}
.fi
.SH "Beispielausgabe"
.nf
code error = 0
uptime = 502034s
Load: 1 min 13376 / 5 min 5504 / 15 min 1152
RAM: gesamt 15343616 / frei 827392 / shared 8237056
Speicher in Puffern = 5066752
Swap: gesamt 27881472 / frei 24698880
Anzahl der Prozesse = 40
.fi
.SH ANMERKUNGEN
Die _syscall() Makros erzeugen KEINEN Prototypen.  Diese mssen noch
extra erzeugt werden, insbesondere, wenn mit C++ gearbeitet wird.
.sp
Systemaufrufe mssen nicht zwingend nur positive oder
negative Fehlerwerte zurckgeben.  Um sicher zu sein, welche
Werte im Fehlerfall zurckgeben werden, mu der Quellcode gelesen
werden.  Normalerweise ist das der negative Wert eines
Standardfehlercodes, z.B.
.BR \-EPERM .
Die _syscall() Makros geben das Ergebnis von
.I r
des Systemaufrufs zurck, wenn
.I r
nicht negativ ist, oder \-1 und setzen
.IR errno " auf " r ,
wenn
.I r
negativ ist.
.sp
Einige Systemaufrufe, wie z.B.
.BR mmap ,
bentigen mehr als fnf Argumente.  Diese werden besonders
behandelt.  Sie werden komplett auf den Stack gelegt und ein Zeiger
auf diesen Block wird bergeben.
.sp
Wenn ein Systemaufruf definiert wird, MSSEN die Argumente by-value
oder by-pointer (z.B. fr structs) durchgereicht werden.
.SH DATEIEN
.I /usr/include/linux/unistd.h
.SH AUTOREN
Sehen Sie bitten in den Kopf der jeweiligen Handbuchseite nach
Autor(en) und Copyright-Vermerk. Bitte beachten Sie, da diese von
Seite zu Seite unterschiedlich sein knnen!