MentOS  0.8.0
The Mentoring Operating System
Macros
syscall_types.h File Reference

System Call numbers. More...

Go to the source code of this file.

Macros

#define __NR_exit   1
 System-call number for exit
 
#define __NR_fork   2
 System-call number for fork
 
#define __NR_read   3
 System-call number for read
 
#define __NR_write   4
 System-call number for write
 
#define __NR_open   5
 System-call number for open
 
#define __NR_close   6
 System-call number for close
 
#define __NR_waitpid   7
 System-call number for waitpid
 
#define __NR_creat   8
 System-call number for creat
 
#define __NR_link   9
 System-call number for link
 
#define __NR_unlink   10
 System-call number for unlink
 
#define __NR_execve   11
 System-call number for execve
 
#define __NR_chdir   12
 System-call number for chdir
 
#define __NR_time   13
 System-call number for time
 
#define __NR_mknod   14
 System-call number for mknod
 
#define __NR_chmod   15
 System-call number for chmod
 
#define __NR_lchown   16
 System-call number for lchown
 
#define __NR_stat   18
 System-call number for stat
 
#define __NR_lseek   19
 System-call number for lseek
 
#define __NR_getpid   20
 System-call number for getpid
 
#define __NR_mount   21
 System-call number for mount
 
#define __NR_oldumount   22
 System-call number for oldumount
 
#define __NR_setuid   23
 System-call number for setuid
 
#define __NR_getuid   24
 System-call number for getuid
 
#define __NR_stime   25
 System-call number for stime
 
#define __NR_ptrace   26
 System-call number for ptrace
 
#define __NR_alarm   27
 System-call number for alarm
 
#define __NR_fstat   28
 System-call number for fstat
 
#define __NR_pause   29
 System-call number for pause
 
#define __NR_utime   30
 System-call number for utime
 
#define __NR_access   33
 System-call number for access
 
#define __NR_nice   34
 System-call number for nice
 
#define __NR_sync   36
 System-call number for sync
 
#define __NR_kill   37
 System-call number for kill
 
#define __NR_rename   38
 System-call number for rename
 
#define __NR_mkdir   39
 System-call number for mkdir
 
#define __NR_rmdir   40
 System-call number for rmdir
 
#define __NR_dup   41
 System-call number for dup
 
#define __NR_pipe   42
 System-call number for pipe
 
#define __NR_times   43
 System-call number for times
 
#define __NR_brk   45
 System-call number for brk
 
#define __NR_setgid   46
 System-call number for setgid
 
#define __NR_getgid   47
 System-call number for getgid
 
#define __NR_signal   48
 System-call number for signal
 
#define __NR_geteuid   49
 System-call number for geteuid
 
#define __NR_getegid   50
 System-call number for getegid
 
#define __NR_acct   51
 System-call number for acct
 
#define __NR_umount   52
 System-call number for umount
 
#define __NR_ioctl   54
 System-call number for ioctl
 
#define __NR_fcntl   55
 System-call number for fcntl
 
#define __NR_setpgid   57
 System-call number for setpgid
 
#define __NR_olduname   59
 System-call number for olduname
 
#define __NR_umask   60
 System-call number for umask
 
#define __NR_chroot   61
 System-call number for chroot
 
#define __NR_ustat   62
 System-call number for ustat
 
#define __NR_dup2   63
 System-call number for dup2
 
#define __NR_getppid   64
 System-call number for getppid
 
#define __NR_getpgrp   65
 System-call number for getpgrp
 
#define __NR_setsid   66
 System-call number for setsid
 
#define __NR_sigaction   67
 System-call number for sigaction
 
#define __NR_sgetmask   68
 System-call number for sgetmask
 
#define __NR_ssetmask   69
 System-call number for ssetmask
 
#define __NR_setreuid   70
 System-call number for setreuid
 
#define __NR_setregid   71
 System-call number for setregid
 
#define __NR_sigsuspend   72
 System-call number for sigsuspend
 
#define __NR_sigpending   73
 System-call number for sigpending
 
#define __NR_sethostname   74
 System-call number for sethostname
 
#define __NR_setrlimit   75
 System-call number for setrlimit
 
#define __NR_getrlimit   76
 System-call number for getrlimit
 
#define __NR_getrusage   77
 System-call number for getrusage
 
#define __NR_gettimeofday   78
 System-call number for gettimeofday
 
#define __NR_settimeofday   79
 System-call number for settimeofday
 
#define __NR_getgroups   80
 System-call number for getgroups
 
#define __NR_setgroups   81
 System-call number for setgroups
 
#define __NR_symlink   83
 System-call number for symlink
 
#define __NR_lstat   84
 System-call number for lstat
 
#define __NR_readlink   85
 System-call number for readlink
 
#define __NR_uselib   86
 System-call number for uselib
 
#define __NR_swapon   87
 System-call number for swapon
 
#define __NR_reboot   88
 System-call number for reboot
 
#define __NR_readdir   89
 System-call number for readdir
 
#define __NR_mmap   90
 System-call number for mmap
 
#define __NR_munmap   91
 System-call number for munmap
 
#define __NR_truncate   92
 System-call number for truncate
 
#define __NR_ftruncate   93
 System-call number for ftruncate
 
#define __NR_fchmod   94
 System-call number for fchmod
 
#define __NR_fchown   95
 System-call number for fchown
 
#define __NR_getpriority   96
 System-call number for getpriority
 
#define __NR_setpriority   97
 System-call number for setpriority
 
#define __NR_statfs   99
 System-call number for statfs
 
#define __NR_fstatfs   100
 System-call number for fstatfs
 
#define __NR_ioperm   101
 System-call number for ioperm
 
#define __NR_socketcall   102
 System-call number for socketcall
 
#define __NR_syslog   103
 System-call number for syslog
 
#define __NR_setitimer   104
 System-call number for setitimer
 
#define __NR_getitimer   105
 System-call number for getitimer
 
#define __NR_newstat   106
 System-call number for newstat
 
#define __NR_newlstat   107
 System-call number for newlstat
 
#define __NR_newfstat   108
 System-call number for newfstat
 
#define __NR_uname   109
 System-call number for uname
 
#define __NR_iopl   110
 System-call number for iopl
 
#define __NR_vhangup   111
 System-call number for vhangup
 
#define __NR_idle   112
 System-call number for idle
 
#define __NR_vm86old   113
 System-call number for vm86old
 
#define __NR_wait4   114
 System-call number for wait4
 
#define __NR_swapoff   115
 System-call number for swapoff
 
#define __NR_sysinfo   116
 System-call number for sysinfo
 
#define __NR_ipc   117
 System-call number for ipc
 
#define __NR_fsync   118
 System-call number for fsync
 
#define __NR_sigreturn   119
 System-call number for sigreturn
 
#define __NR_clone   120
 System-call number for clone
 
#define __NR_setdomainname   121
 System-call number for setdomainname
 
#define __NR_newuname   122
 System-call number for newuname
 
#define __NR_modify_ldt   123
 System-call number for modify_ldt
 
#define __NR_adjtimex   124
 System-call number for adjtimex
 
#define __NR_mprotect   125
 System-call number for mprotect
 
#define __NR_sigprocmask   126
 System-call number for sigprocmask
 
#define __NR_create_module   127
 System-call number for create_module
 
#define __NR_init_module   128
 System-call number for init_module
 
#define __NR_delete_module   129
 System-call number for delete_module
 
#define __NR_get_kernel_syms   130
 System-call number for get_kernel_syms
 
#define __NR_quotactl   131
 System-call number for quotactl
 
#define __NR_getpgid   132
 System-call number for getpgid
 
#define __NR_fchdir   133
 System-call number for fchdir
 
#define __NR_bdflush   134
 System-call number for bdflush
 
#define __NR_sysfs   135
 System-call number for sysfs
 
#define __NR_personality   136
 System-call number for personality
 
#define __NR_setfsuid   138
 System-call number for setfsuid
 
#define __NR_setfsgid   139
 System-call number for setfsgid
 
#define __NR_llseek   140
 System-call number for llseek
 
#define __NR_getdents   141
 System-call number for getdents
 
#define __NR_select   142
 System-call number for select
 
#define __NR_flock   143
 System-call number for flock
 
#define __NR_msync   144
 System-call number for msync
 
#define __NR_readv   145
 System-call number for readv
 
#define __NR_writev   146
 System-call number for writev
 
#define __NR_getsid   147
 System-call number for getsid
 
#define __NR_fdatasync   148
 System-call number for fdatasync
 
#define __NR_sysctl   149
 System-call number for sysctl
 
#define __NR_mlock   150
 System-call number for mlock
 
#define __NR_munlock   151
 System-call number for munlock
 
#define __NR_mlockall   152
 System-call number for mlockall
 
#define __NR_munlockall   153
 System-call number for munlockall
 
#define __NR_sched_setparam   154
 System-call number for sched_setparam
 
#define __NR_sched_getparam   155
 System-call number for sched_getparam
 
#define __NR_sched_setscheduler   156
 System-call number for sched_setscheduler
 
#define __NR_sched_getscheduler   157
 System-call number for sched_getscheduler
 
#define __NR_sched_yield   158
 System-call number for sched_yield
 
#define __NR_sched_get_priority_max   159
 System-call number for sched_get_priority_max
 
#define __NR_sched_get_priority_min   160
 System-call number for sched_get_priority_min
 
#define __NR_sched_rr_get_interval   161
 System-call number for sched_rr_get_interval
 
#define __NR_nanosleep   162
 System-call number for nanosleep
 
#define __NR_mremap   163
 System-call number for mremap
 
#define __NR_setresuid   164
 System-call number for setresuid
 
#define __NR_getresuid   165
 System-call number for getresuid
 
#define __NR_vm86   166
 System-call number for vm86
 
#define __NR_query_module   167
 System-call number for query_module
 
#define __NR_poll   168
 System-call number for poll
 
#define __NR_nfsservctl   169
 System-call number for nfsservctl
 
#define __NR_setresgid   170
 System-call number for setresgid
 
#define __NR_getresgid   171
 System-call number for getresgid
 
#define __NR_prctl   172
 System-call number for prctl
 
#define __NR_rt_sigreturn   173
 System-call number for rt_sigreturn
 
#define __NR_rt_sigaction   174
 System-call number for rt_sigaction
 
#define __NR_rt_sigprocmask   175
 System-call number for rt_sigprocmask
 
#define __NR_rt_sigpending   176
 System-call number for rt_sigpending
 
#define __NR_rt_sigtimedwait   177
 System-call number for rt_sigtimedwait
 
#define __NR_rt_sigqueueinfo   178
 System-call number for rt_sigqueueinfo
 
#define __NR_rt_sigsuspend   179
 System-call number for rt_sigsuspend
 
#define __NR_pread   180
 System-call number for pread
 
#define __NR_pwrite   181
 System-call number for pwrite
 
#define __NR_chown   182
 System-call number for chown
 
#define __NR_getcwd   183
 System-call number for getcwd
 
#define __NR_capget   184
 System-call number for capget
 
#define __NR_capset   185
 System-call number for capset
 
#define __NR_sigaltstack   186
 System-call number for sigaltstack
 
#define __NR_sendfile   187
 System-call number for sendfile
 
#define __NR_waitperiod   188
 System-call number for waitperiod
 
#define __NR_msgctl   189
 System-call number for msgctl
 
#define __NR_msgget   190
 System-call number for msgget
 
#define __NR_msgrcv   191
 System-call number for msgrcv
 
#define __NR_msgsnd   192
 System-call number for msgsnd
 
#define __NR_semctl   193
 System-call number for semctl
 
#define __NR_semget   194
 System-call number for semget
 
#define __NR_semop   195
 System-call number for semop
 
#define __NR_shmat   196
 System-call number for shmat
 
#define __NR_shmctl   197
 System-call number for shmctl
 
#define __NR_shmdt   198
 System-call number for shmdt
 
#define __NR_shmget   199
 System-call number for shmget
 
#define SYSCALL_NUMBER   200
 The total number of system-calls.
 
#define __syscall_return(type, res)
 Handle the value returned from a system call. More...
 
#define __inline_syscall0(res, name)
 Heart of the code that calls a system call with 0 parameters. More...
 
#define __inline_syscall1(res, name, arg1)
 Heart of the code that calls a system call with 1 parameter. More...
 
#define __inline_syscall2(res, name, arg1, arg2)
 Heart of the code that calls a system call with 2 parameters. More...
 
#define __inline_syscall3(res, name, arg1, arg2, arg3)
 Heart of the code that calls a system call with 3 parameters. More...
 
#define __inline_syscall4(res, name, arg1, arg2, arg3, arg4)
 Heart of the code that calls a system call with 4 parameters. More...
 
#define __inline_syscall5(res, name, arg1, arg2, arg3, arg4, arg5)
 Heart of the code that calls a system call with 5 parameters. More...
 
#define _syscall0(type, name)
 System call with 0 parameters. More...
 
#define _syscall1(type, name, type1, arg1)
 System call with 1 parameter. More...
 
#define _syscall2(type, name, type1, arg1, type2, arg2)
 System call with 2 parameters. More...
 
#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3)
 System call with 3 parameters. More...
 
#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4)
 System call with 4 parameters. More...
 
#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5)
 System call with 5 parameters. More...
 
#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5, type6, arg6)
 System call with 5 parameters. More...
 

Detailed Description

System Call numbers.

Macro Definition Documentation

◆ __inline_syscall0

#define __inline_syscall0 (   res,
  name 
)
Value:
__asm__ __volatile__("int $0x80" \
: "=a"(res) \
: "0"(__NR_##name))

Heart of the code that calls a system call with 0 parameters.

◆ __inline_syscall1

#define __inline_syscall1 (   res,
  name,
  arg1 
)
Value:
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"(arg1) \
: "memory");

Heart of the code that calls a system call with 1 parameter.

◆ __inline_syscall2

#define __inline_syscall2 (   res,
  name,
  arg1,
  arg2 
)
Value:
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"(arg1), "c"(arg2) \
: "memory");

Heart of the code that calls a system call with 2 parameters.

◆ __inline_syscall3

#define __inline_syscall3 (   res,
  name,
  arg1,
  arg2,
  arg3 
)
Value:
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"(arg1), "c"(arg2), "d"(arg3) \
: "memory");

Heart of the code that calls a system call with 3 parameters.

◆ __inline_syscall4

#define __inline_syscall4 (   res,
  name,
  arg1,
  arg2,
  arg3,
  arg4 
)
Value:
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"(arg1), "c"(arg2), "d"(arg3), "S"(arg4) \
: "memory");

Heart of the code that calls a system call with 4 parameters.

◆ __inline_syscall5

#define __inline_syscall5 (   res,
  name,
  arg1,
  arg2,
  arg3,
  arg4,
  arg5 
)
Value:
__asm__ __volatile__("push %%ebx; movl %2,%%ebx; movl %1,%%eax; " \
"int $0x80; pop %%ebx" \
: "=a"(res) \
: "i"(__NR_##name), "ri"(arg1), "c"(arg2), "d"(arg3), "S"(arg4), "D"(arg5) \
: "memory");

Heart of the code that calls a system call with 5 parameters.

◆ __syscall_return

#define __syscall_return (   type,
  res 
)
Value:
do { \
if ((unsigned int)(res) >= (unsigned int)(-125)) { \
errno = -(res); \
(res) = -1; \
} \
return (type)(res); \
} while (0)

Handle the value returned from a system call.

Parameters
typeSpecifies the type of the returned value.
resThe name of the variable where the result of the SC is stored.

◆ _syscall0

#define _syscall0 (   type,
  name 
)
Value:
type name(void) \
{ \
long __res; \
__inline_syscall0(__res, name); \
__syscall_return(type, __res); \
}

System call with 0 parameters.

◆ _syscall1

#define _syscall1 (   type,
  name,
  type1,
  arg1 
)
Value:
type name(type1 arg1) \
{ \
long __res; \
__inline_syscall1(__res, name, arg1); \
__syscall_return(type, __res); \
}

System call with 1 parameter.

◆ _syscall2

#define _syscall2 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2 
)
Value:
type name(type1 arg1, type2 arg2) \
{ \
long __res; \
__inline_syscall2(__res, name, arg1, arg2); \
__syscall_return(type, __res); \
}

System call with 2 parameters.

◆ _syscall3

#define _syscall3 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3) \
{ \
long __res; \
__inline_syscall3(__res, name, arg1, arg2, arg3); \
__syscall_return(type, __res); \
}

System call with 3 parameters.

◆ _syscall4

#define _syscall4 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
long __res; \
__inline_syscall4(__res, name, arg1, arg2, arg3, arg4); \
__syscall_return(type, __res); \
}

System call with 4 parameters.

◆ _syscall5

#define _syscall5 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4,
  type5,
  arg5 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \
{ \
long __res; \
__inline_syscall5(__res, name, arg1, arg2, arg3, arg4, arg5); \
__syscall_return(type, __res); \
}

System call with 5 parameters.

◆ _syscall6

#define _syscall6 (   type,
  name,
  type1,
  arg1,
  type2,
  arg2,
  type3,
  arg3,
  type4,
  arg4,
  type5,
  arg5,
  type6,
  arg6 
)
Value:
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6) \
{ \
long __res; \
unsigned args[6] = { 0 }; \
args[0] = (unsigned)arg1; \
args[1] = (unsigned)arg2; \
args[2] = (unsigned)arg3; \
args[3] = (unsigned)arg4; \
args[4] = (unsigned)arg5; \
args[5] = (unsigned)arg6; \
__inline_syscall1(__res, name, args); \
__syscall_return(type, __res); \
}

System call with 5 parameters.