version 1, including all changes.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
SYSCALLS |
|
|
2 |
!!!SYSCALLS |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
---- |
|
|
7 |
!!NAME |
|
|
8 |
|
|
|
9 |
|
|
|
10 |
none - list of all system calls |
|
|
11 |
!!SYNOPSIS |
|
|
12 |
|
|
|
13 |
|
|
|
14 |
Linux 2.0 system calls. |
|
|
15 |
!!DESCRIPTION |
|
|
16 |
|
|
|
17 |
|
|
|
18 |
As of Linux 2.0.34, there are 164 system calls listed in |
|
|
19 |
''/usr/include/asm/unistd.h''. This man page lists |
|
|
20 |
them. |
|
|
21 |
|
|
|
22 |
|
|
|
23 |
_llseek(2), _newselect(2), _sysctl(2), access(2), acct(2), |
|
|
24 |
adjtimex(2), afs_syscall, alarm(2), bdflush(2), break, |
|
|
25 |
brk(2), chdir(2), chmod(2), chown(2), chroot(2), clone(2), |
|
|
26 |
close(2), creat(2), create_module(2), delete_module(2), |
|
|
27 |
dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2), |
|
|
28 |
fchown(2), fcntl(2), fdatasync(2), flock(2), fork(2), |
|
|
29 |
fstat(2), fstatfs(2), fsync(2), ftime, ftruncate(2), get- |
|
|
30 |
_kernel_syms(2), getdents(2), getegid(2), geteuid(2), get- |
|
|
31 |
gid(2), getgroups(2), getitimer(2), getpgid(2), get- |
|
|
32 |
pgrp(2), getpid(2), getppid(2), getpriority(2), get- |
|
|
33 |
rlimit(2), getrusage(2), getsid(2), gettimeofday(2), get- |
|
|
34 |
uid(2), gtty, idle(2), init_module(2), ioctl(2), io- |
|
|
35 |
perm(2), iopl(2), ipc(2), kill(2), link(2), lock, lseek(2), |
|
|
36 |
lstat(2), mkdir(2), mknod(2), mlock(2), mlockall(2), |
|
|
37 |
mmap(2), modify_ldt(2), mount(2), mprotect(2), mpx, |
|
|
38 |
mremap(2), msync(2), munlock(2), munlockall(2), munmap(2), |
|
|
39 |
nanosleep(2), nice(2), oldfstat, oldlstat, oldolduname, |
|
|
40 |
oldstat, olduname, open(2), pause(2), personality(2), phys, |
|
|
41 |
pipe(2), prof, profil, ptrace(2), quotactl(2), read(2), |
|
|
42 |
readdir(2), readlink(2), readv(2), reboot(2), rename(2), |
|
|
43 |
rmdir(2), sched_get_- priority_max(2), |
|
|
44 |
sched_get_priority_min(2), sched_get- param(2), |
|
|
45 |
sched_getscheduler(2), sched_rr_get_interval(2), |
|
|
46 |
sched_setparam(2), sched_setscheduler(2), sched_yield(2), |
|
|
47 |
select(2), setdomainname(2), setfsgid(2), setfsuid(2), |
|
|
48 |
setgid(2), setgroups(2), sethostname(2), setitimer(2), |
|
|
49 |
setpgid(2), setpriority(2), setregid(2), setreuid(2), set- |
|
|
50 |
rlimit(2), setsid(2), settimeofday(2), setuid(2), setup(2), |
|
|
51 |
sgetmask(2), sigaction(2), signal(2), sigpending(2), |
|
|
52 |
sigprocmask(2), sigreturn(2), sigsuspend(2), socketcall(2), |
|
|
53 |
ssetmask(2), stat(2), statfs(2), stime(2), stty, swapoff(2), |
|
|
54 |
swapon(2), symlink(2), sync(2), sysfs(2), sysinfo(2), |
|
|
55 |
syslog(2), time(2), times(2), truncate(2), ulimit, umask(2), |
|
|
56 |
umount(2), uname(2), unlink(2), uselib(2), ustat(2), |
|
|
57 |
utime(2), vhangup(2), vm86(2), wait4(2), waitpid(2), |
|
|
58 |
write(2), writev(2). |
|
|
59 |
|
|
|
60 |
|
|
|
61 |
Of the above, 5 are obsolete, namely oldfstat, oldlstat, |
|
|
62 |
oldolduname, oldstat and olduname (see also obsolete(2)), |
|
|
63 |
and 11 are unimplemented, namely afs_syscall, break, ftime, |
|
|
64 |
gtty, lock, mpx, phys, prof, profil, stty and ulimit (see |
|
|
65 |
also unimplemented(2)). However, ftime(3), profil(3) and |
|
|
66 |
ulimit(3) exist as library routines. The slot for phys is in |
|
|
67 |
use since 2.1.116 for umount2; phys will never be |
|
|
68 |
implemented. |
|
|
69 |
|
|
|
70 |
|
|
|
71 |
Roughly speaking, the code belonging to the system call with |
|
|
72 |
number __NR_xxx defined in ''/usr/include/asm/unistd.h'' |
|
|
73 |
can be found in the kernel source in the routine |
|
|
74 |
''sys_xxx()''. (The dispatch table for i386 can be found |
|
|
75 |
in ''/usr/src/linux/arch/i386/kernel/entry.S''.) There |
|
|
76 |
are many exceptions, however, mostly because older system |
|
|
77 |
calls were superseded by newer ones, and this has been |
|
|
78 |
treated somewhat unsystematically. Below the details for |
|
|
79 |
Linux 2.0.34. |
|
|
80 |
|
|
|
81 |
|
|
|
82 |
The defines __NR_oldstat and __NR_stat refer to the routines |
|
|
83 |
sys_stat() and sys_newstat(), and similarly for ''fstat'' |
|
|
84 |
and ''lstat''. Similarly, the defines __NR_oldolduname, |
|
|
85 |
__NR_olduname and __NR_uname refer to the routines |
|
|
86 |
sys_olduname(), sys_uname() and sys_newuname(). Thus, |
|
|
87 |
__NR_stat and __NR_uname have always referred to the latest |
|
|
88 |
version of the system call, and the older ones are for |
|
|
89 |
backward compatibility. |
|
|
90 |
|
|
|
91 |
|
|
|
92 |
It is different with ''select'' and ''mmap''. These |
|
|
93 |
use five or more parameters, and caused problems the way |
|
|
94 |
parameter passing on the i386 used to be set up. Thus, while |
|
|
95 |
other architectures have sys_select() ans sys_mmap() |
|
|
96 |
corresponding to __NR_select and __NR_mmap, on i386 one |
|
|
97 |
finds old_select() and old_mmap() (routines that use a |
|
|
98 |
pointer to a parameter block) instead. These days passing |
|
|
99 |
five parameters is not a problem anymore, and there is a |
|
|
100 |
__NR__newselect (used by libc 6) that corresponds directly |
|
|
101 |
to sys_select(). |
|
|
102 |
|
|
|
103 |
|
|
|
104 |
Two other system call numbers, __NR__llseek and __NR__sysctl |
|
|
105 |
have an additional underscore absent in sys_llseek() and |
|
|
106 |
sys_sysctl(). |
|
|
107 |
|
|
|
108 |
|
|
|
109 |
Then there is __NR_readdir corresponding to old_readdir(), |
|
|
110 |
which will read at most one directory entry at a time, and |
|
|
111 |
is superseded by sys_getdents(). |
|
|
112 |
|
|
|
113 |
|
|
|
114 |
Finally, the system call 166, with entry point sys_vm86() |
|
|
115 |
does not have a symbolic number at all. This version |
|
|
116 |
supersedes sys_vm86old() with number __NR_vm86. |
|
|
117 |
---- |