LINUX System Call Quick Reference
Jialong He
Jialong_he@bigfoot.com
http://www.bigfoot.com/~jialong_he
Introduction
System call is the services provided by Linux kernel. In C programming, it often uses functions defined in libc
which provides a wrapper for many system calls. Manual page section 2 provides more information about
system calls. To get an overview, use “man 2 intro” in a command shell.
It is also possible to invoke syscall() function directly. Each system call has a function number defined in
<syscall.h> or <unistd.h>. Internally, system call is invokded by software interrupt 0x80 to transfer control to
the kernel. System call table is defined in Linux kernel source file “arch/i386/kernel/entry.S ”.
System Call Example
#include <syscall.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
int main(void) {
long ID1, ID2;
/*-----------------------------*/
/* direct system call */
/* SYS_getpid (func no. is 20) */
/*-----------------------------*/
ID1 = syscall(SYS_getpid);
printf ("syscall(SYS_getpid)=%ld\n", ID1);
/*-----------------------------*/
/* "libc" wrapped system call */
/* SYS_getpid (Func No. is 20) */
/*-----------------------------*/
ID2 = getpid();
printf ("getpid()=%ld\n", ID2);
return(0);
}
System Call Quick Reference
No
Func Name Description Source
1 exit
terminate the current process kernel/exit.c
2 fork
create a child process arch/i386/kernel/process.c
3 read
read from a file descriptor fs/read_write.c
4 write
write to a file descriptor fs/read_write.c
5 open
open a file or device fs/open.c
6 close
close a file descriptor fs/open.c
7 waitpid
wait for process termination kernel/exit.c
8 creat
create a file or device ("man 2 open" for
information)
fs/open.c
9 link
make a new name for a file fs/namei.c
10 unlink
delete a name and possibly the file it refers to fs/namei.c
11 execve
execute program arch/i386/kernel/process.c
12 chdir
change working directory fs/open.c
13 time
get time in seconds kernel/time.c
14 mknod
create a special or ordinary file fs/namei.c
15 chmod
change permissions of a file fs/open.c
16 lchown
change ownership of a file fs/open.c
18 stat
get file status fs/stat.c
19 lseek
reposition read/write file offset fs/read_write.c
20 getpid
get process identification kernel/sched.c
21 mount
mount filesystems fs/super.c
22 umount
unmount filesystems fs/super.c
23 setuid
set real user ID kernel/sys.c
24 getuid
get real user ID kernel/sched.c
25 stime
set system time and date kernel/time.c
26 ptrace
allows a parent process to control the execution of
a child process
arch/i386/kernel/ptrace.c
27 alarm
set an alarm clock for delivery of a signal kernel/sched.c
28 fstat
get file status fs/stat.c
29 pause
suspend process until signal arch/i386/kernel/sys_i386.c
30 utime
set file access and modification times fs/open.c
33 access
check user's permissions for a file fs/open.c
34 nice
change process priority kernel/sched.c
36 sync
update the super block fs/buffer.c
37 kill
send signal to a process kernel/signal.c
38 rename
change the name or location of a file fs/namei.c
39 mkdir
create a directory fs/namei.c
40 rmdir
remove a directory fs/namei.c
41 dup
duplicate an open file descriptor fs/fcntl.c
42 pipe
create an interprocess channel arch/i386/kernel/sys_i386.c
43 times
get process times kernel/sys.c
45 brk
change the amount of space allocated for the
calling process's data segment
mm/mmap.c
46 setgid
set real group ID kernel/sys.c
47 getgid
get real group ID kernel/sched.c
48 sys_signal
ANSI C signal handling kernel/signal.c
49 geteuid
get effective user ID kernel/sched.c
50 getegid
get effective group ID kernel/sched.c