Update MentOs code to the latest development version.

This commit is contained in:
Enrico Fraccaroli
2021-10-04 11:44:02 +02:00
parent 6fd063984a
commit b01eccca2e
484 changed files with 42358 additions and 20285 deletions
+308
View File
@@ -0,0 +1,308 @@
/// MentOS, The Mentoring Operating system project
/// @file syscall_types.h
/// @brief System Call numbers.
/// @copyright (c) 2014-2021 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#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.
/// @brief Handle the value returned from a system call.
/// @param type Specifies the type of the returned value.
/// @param res The name of the variable where the result of the SC is stored.
#define __syscall_return(type, res) \
do { \
if ((unsigned int)(res) >= (unsigned int)(-125)) { \
errno = -(res); \
(res) = -1; \
} \
return (type)(res); \
} while (0)
/// @brief Heart of the code that calls a system call with 0 parameters.
#define __inline_syscall0(res, name) \
__asm__ __volatile__("int $0x80" \
: "=a"(res) \
: "0"(__NR_##name))
/// @brief Heart of the code that calls a system call with 1 parameter.
#define __inline_syscall1(res, name, arg1) \
__asm__ __volatile__("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"((int)(arg1)) \
: "memory");
/// @brief Heart of the code that calls a system call with 2 parameters.
#define __inline_syscall2(res, name, arg1, arg2) \
__asm__ __volatile__("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"((int)(arg1)), "c"((int)(arg2)) \
: "memory");
/// @brief Heart of the code that calls a system call with 3 parameters.
#define __inline_syscall3(res, name, arg1, arg2, arg3) \
__asm__ __volatile__("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"((int)(arg1)), "c"((int)(arg2)), \
"d"((int)(arg3)) \
: "memory");
/// @brief Heart of the code that calls a system call with 4 parameters.
#define __inline_syscall4(res, name, arg1, arg2, arg3, arg4) \
__asm__ __volatile__("push %%ebx ; movl %2,%%ebx ; int $0x80 ; pop %%ebx" \
: "=a"(res) \
: "0"(__NR_##name), "ri"((int)(arg1)), "c"((int)(arg2)), \
"d"((int)(arg3)), "S"((int)(arg4)) \
: "memory");
/// @brief Heart of the code that calls a system call with 5 parameters.
#define __inline_syscall5(res, name, arg1, arg2, arg3, arg4, arg5) \
__asm__ __volatile__("push %%ebx ; movl %2,%%ebx ; movl %1,%%eax ; " \
"int $0x80 ; pop %%ebx" \
: "=a"(res) \
: "i"(__NR_##name), "ri"((int)(arg1)), "c"((int)(arg2)), \
"d"((int)(arg3)), "S"((int)(arg4)), "D"((int)(arg5)) \
: "memory");
/// @brief System call with 0 parameters.
#define _syscall0(type, name) \
type name(void) \
{ \
long __res; \
__inline_syscall0(__res, name); \
__syscall_return(type, __res); \
}
/// @brief System call with 1 parameter.
#define _syscall1(type, name, type1, arg1) \
type name(type1 arg1) \
{ \
long __res; \
__inline_syscall1(__res, name, arg1); \
__syscall_return(type, __res); \
}
/// @brief System call with 2 parameters.
#define _syscall2(type, name, type1, arg1, type2, arg2) \
type name(type1 arg1, type2 arg2) \
{ \
long __res; \
__inline_syscall2(__res, name, arg1, arg2); \
__syscall_return(type, __res); \
}
/// @brief System call with 3 parameters.
#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \
type name(type1 arg1, type2 arg2, type3 arg3) \
{ \
long __res; \
__inline_syscall3(__res, name, arg1, arg2, arg3); \
__syscall_return(type, __res); \
}
/// @brief System call with 4 parameters.
#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \
type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
{ \
long __res; \
__inline_syscall4(__res, name, arg1, arg2, arg3, arg4); \
__syscall_return(type, __res); \
}
/// @brief System call with 5 parameters.
#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \
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); \
}