summaryrefslogtreecommitdiff
path: root/reference/C/LIBRARIES/syscalls.htm
blob: e74dd70ba9d78afccfba4606a6653cfa74d015b1 (plain)
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
<html>
<head>
<title>System calls and library calls</title>
<script language="JavaScript">
</script>
</head>

<body bgcolor="#ffffcc">
<hr>
<center>
<h1>System calls and library calls</h1>
</center>
<hr>
<p>

I have wondered for sometime what the difference is between
system calls (found in section 2 of the man pages)
and library calls (in section 3).

Its simple...

<ul>
<li>system calls are provided by the <i>system</i>
and are executed in the system kernel. They are entry points
into the kernel and are therefore NOT linked into your
program. These are not portable
calls.
<li>Library calls include the ANSI C standard library and are
therefore portable. These functions are linked into your program.
</ul>

It is worth noting that, because system calls are part of the
O/S. The program has to make a context switch to the kernel
when they are called and because of this, they have a high
startup overhead. The upside is that the time executing these
routines is assigned to the OS and not the user program.

<p>
<hr>
<p>
<center>
<table border=2 width="80%" bgcolor="ivory">
<tr align=center>
<td width="25%">
<a href="../cref.html">                  Top</a>
</td><td width="25%">
<a href="../master_index.html">          Master Index</a>
</td><td width="25%">
<a href="../SYNTAX/keywords.html">                 Keywords</a>
</td><td width="25%">
<a href="../FUNCTIONS/funcref.htm">      Functions</a>
</td>
</tr>
</table>
</center>
<p>
<hr>
<address>Martin Leslie 
</address><p>
</body>
</html>