1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-11 18:20:43 +09:00

Kernel: Tidy up the syscalls list by reorganizing the enumerator macro

This commit is contained in:
Andreas Kling 2020-08-04 13:00:50 +02:00
parent a619943001
commit 83a4fbf548
Notes: sideshowbarker 2024-07-19 04:19:34 +09:00
3 changed files with 154 additions and 169 deletions

View file

@ -46,166 +46,163 @@ typedef u32 socklen_t;
namespace Kernel { namespace Kernel {
#define ENUMERATE_SYSCALLS \ #define ENUMERATE_SYSCALLS(S) \
__ENUMERATE_SYSCALL(sleep) \ S(sleep) \
__ENUMERATE_SYSCALL(yield) \ S(yield) \
__ENUMERATE_SYSCALL(open) \ S(open) \
__ENUMERATE_SYSCALL(close) \ S(close) \
__ENUMERATE_SYSCALL(read) \ S(read) \
__ENUMERATE_SYSCALL(lseek) \ S(lseek) \
__ENUMERATE_SYSCALL(kill) \ S(kill) \
__ENUMERATE_SYSCALL(getuid) \ S(getuid) \
__ENUMERATE_SYSCALL(exit) \ S(exit) \
__ENUMERATE_SYSCALL(geteuid) \ S(geteuid) \
__ENUMERATE_SYSCALL(getegid) \ S(getegid) \
__ENUMERATE_SYSCALL(getgid) \ S(getgid) \
__ENUMERATE_SYSCALL(getpid) \ S(getpid) \
__ENUMERATE_SYSCALL(getppid) \ S(getppid) \
__ENUMERATE_SYSCALL(getresuid) \ S(getresuid) \
__ENUMERATE_SYSCALL(getresgid) \ S(getresgid) \
__ENUMERATE_SYSCALL(waitid) \ S(waitid) \
__ENUMERATE_SYSCALL(mmap) \ S(mmap) \
__ENUMERATE_SYSCALL(munmap) \ S(munmap) \
__ENUMERATE_SYSCALL(get_dir_entries) \ S(get_dir_entries) \
__ENUMERATE_SYSCALL(getcwd) \ S(getcwd) \
__ENUMERATE_SYSCALL(gettimeofday) \ S(gettimeofday) \
__ENUMERATE_SYSCALL(gethostname) \ S(gethostname) \
__ENUMERATE_SYSCALL(sethostname) \ S(sethostname) \
__ENUMERATE_SYSCALL(chdir) \ S(chdir) \
__ENUMERATE_SYSCALL(uname) \ S(uname) \
__ENUMERATE_SYSCALL(set_mmap_name) \ S(set_mmap_name) \
__ENUMERATE_SYSCALL(readlink) \ S(readlink) \
__ENUMERATE_SYSCALL(write) \ S(write) \
__ENUMERATE_SYSCALL(ttyname_r) \ S(ttyname_r) \
__ENUMERATE_SYSCALL(stat) \ S(stat) \
__ENUMERATE_SYSCALL(getsid) \ S(getsid) \
__ENUMERATE_SYSCALL(setsid) \ S(setsid) \
__ENUMERATE_SYSCALL(getpgid) \ S(getpgid) \
__ENUMERATE_SYSCALL(setpgid) \ S(setpgid) \
__ENUMERATE_SYSCALL(getpgrp) \ S(getpgrp) \
__ENUMERATE_SYSCALL(fork) \ S(fork) \
__ENUMERATE_SYSCALL(execve) \ S(execve) \
__ENUMERATE_SYSCALL(dup) \ S(dup) \
__ENUMERATE_SYSCALL(dup2) \ S(dup2) \
__ENUMERATE_SYSCALL(sigaction) \ S(sigaction) \
__ENUMERATE_SYSCALL(umask) \ S(umask) \
__ENUMERATE_SYSCALL(getgroups) \ S(getgroups) \
__ENUMERATE_SYSCALL(setgroups) \ S(setgroups) \
__ENUMERATE_SYSCALL(sigreturn) \ S(sigreturn) \
__ENUMERATE_SYSCALL(sigprocmask) \ S(sigprocmask) \
__ENUMERATE_SYSCALL(sigpending) \ S(sigpending) \
__ENUMERATE_SYSCALL(pipe) \ S(pipe) \
__ENUMERATE_SYSCALL(killpg) \ S(killpg) \
__ENUMERATE_SYSCALL(seteuid) \ S(seteuid) \
__ENUMERATE_SYSCALL(setegid) \ S(setegid) \
__ENUMERATE_SYSCALL(setuid) \ S(setuid) \
__ENUMERATE_SYSCALL(setgid) \ S(setgid) \
__ENUMERATE_SYSCALL(setresuid) \ S(setresuid) \
__ENUMERATE_SYSCALL(setresgid) \ S(setresgid) \
__ENUMERATE_SYSCALL(alarm) \ S(alarm) \
__ENUMERATE_SYSCALL(fstat) \ S(fstat) \
__ENUMERATE_SYSCALL(access) \ S(access) \
__ENUMERATE_SYSCALL(fcntl) \ S(fcntl) \
__ENUMERATE_SYSCALL(ioctl) \ S(ioctl) \
__ENUMERATE_SYSCALL(mkdir) \ S(mkdir) \
__ENUMERATE_SYSCALL(times) \ S(times) \
__ENUMERATE_SYSCALL(utime) \ S(utime) \
__ENUMERATE_SYSCALL(sync) \ S(sync) \
__ENUMERATE_SYSCALL(ptsname_r) \ S(ptsname_r) \
__ENUMERATE_SYSCALL(select) \ S(select) \
__ENUMERATE_SYSCALL(unlink) \ S(unlink) \
__ENUMERATE_SYSCALL(poll) \ S(poll) \
__ENUMERATE_SYSCALL(rmdir) \ S(rmdir) \
__ENUMERATE_SYSCALL(chmod) \ S(chmod) \
__ENUMERATE_SYSCALL(usleep) \ S(usleep) \
__ENUMERATE_SYSCALL(socket) \ S(socket) \
__ENUMERATE_SYSCALL(bind) \ S(bind) \
__ENUMERATE_SYSCALL(accept) \ S(accept) \
__ENUMERATE_SYSCALL(listen) \ S(listen) \
__ENUMERATE_SYSCALL(connect) \ S(connect) \
__ENUMERATE_SYSCALL(shbuf_create) \ S(shbuf_create) \
__ENUMERATE_SYSCALL(shbuf_allow_pid) \ S(shbuf_allow_pid) \
__ENUMERATE_SYSCALL(shbuf_get) \ S(shbuf_get) \
__ENUMERATE_SYSCALL(shbuf_release) \ S(shbuf_release) \
__ENUMERATE_SYSCALL(link) \ S(link) \
__ENUMERATE_SYSCALL(chown) \ S(chown) \
__ENUMERATE_SYSCALL(fchmod) \ S(fchmod) \
__ENUMERATE_SYSCALL(symlink) \ S(symlink) \
__ENUMERATE_SYSCALL(shbuf_seal) \ S(shbuf_seal) \
__ENUMERATE_SYSCALL(sendto) \ S(sendto) \
__ENUMERATE_SYSCALL(recvfrom) \ S(recvfrom) \
__ENUMERATE_SYSCALL(getsockopt) \ S(getsockopt) \
__ENUMERATE_SYSCALL(setsockopt) \ S(setsockopt) \
__ENUMERATE_SYSCALL(create_thread) \ S(create_thread) \
__ENUMERATE_SYSCALL(gettid) \ S(gettid) \
__ENUMERATE_SYSCALL(donate) \ S(donate) \
__ENUMERATE_SYSCALL(rename) \ S(rename) \
__ENUMERATE_SYSCALL(ftruncate) \ S(ftruncate) \
__ENUMERATE_SYSCALL(exit_thread) \ S(exit_thread) \
__ENUMERATE_SYSCALL(mknod) \ S(mknod) \
__ENUMERATE_SYSCALL(writev) \ S(writev) \
__ENUMERATE_SYSCALL(beep) \ S(beep) \
__ENUMERATE_SYSCALL(getsockname) \ S(getsockname) \
__ENUMERATE_SYSCALL(getpeername) \ S(getpeername) \
__ENUMERATE_SYSCALL(sched_setparam) \ S(sched_setparam) \
__ENUMERATE_SYSCALL(sched_getparam) \ S(sched_getparam) \
__ENUMERATE_SYSCALL(fchown) \ S(fchown) \
__ENUMERATE_SYSCALL(halt) \ S(halt) \
__ENUMERATE_SYSCALL(reboot) \ S(reboot) \
__ENUMERATE_SYSCALL(mount) \ S(mount) \
__ENUMERATE_SYSCALL(umount) \ S(umount) \
__ENUMERATE_SYSCALL(dump_backtrace) \ S(dump_backtrace) \
__ENUMERATE_SYSCALL(dbgputch) \ S(dbgputch) \
__ENUMERATE_SYSCALL(dbgputstr) \ S(dbgputstr) \
__ENUMERATE_SYSCALL(watch_file) \ S(watch_file) \
__ENUMERATE_SYSCALL(shbuf_allow_all) \ S(shbuf_allow_all) \
__ENUMERATE_SYSCALL(set_process_icon) \ S(set_process_icon) \
__ENUMERATE_SYSCALL(mprotect) \ S(mprotect) \
__ENUMERATE_SYSCALL(realpath) \ S(realpath) \
__ENUMERATE_SYSCALL(get_process_name) \ S(get_process_name) \
__ENUMERATE_SYSCALL(fchdir) \ S(fchdir) \
__ENUMERATE_SYSCALL(getrandom) \ S(getrandom) \
__ENUMERATE_SYSCALL(setkeymap) \ S(setkeymap) \
__ENUMERATE_SYSCALL(clock_gettime) \ S(clock_gettime) \
__ENUMERATE_SYSCALL(clock_settime) \ S(clock_settime) \
__ENUMERATE_SYSCALL(clock_nanosleep) \ S(clock_nanosleep) \
__ENUMERATE_SYSCALL(join_thread) \ S(join_thread) \
__ENUMERATE_SYSCALL(module_load) \ S(module_load) \
__ENUMERATE_SYSCALL(module_unload) \ S(module_unload) \
__ENUMERATE_SYSCALL(detach_thread) \ S(detach_thread) \
__ENUMERATE_SYSCALL(set_thread_name) \ S(set_thread_name) \
__ENUMERATE_SYSCALL(get_thread_name) \ S(get_thread_name) \
__ENUMERATE_SYSCALL(madvise) \ S(madvise) \
__ENUMERATE_SYSCALL(purge) \ S(purge) \
__ENUMERATE_SYSCALL(shbuf_set_volatile) \ S(shbuf_set_volatile) \
__ENUMERATE_SYSCALL(profiling_enable) \ S(profiling_enable) \
__ENUMERATE_SYSCALL(profiling_disable) \ S(profiling_disable) \
__ENUMERATE_SYSCALL(futex) \ S(futex) \
__ENUMERATE_SYSCALL(set_thread_boost) \ S(set_thread_boost) \
__ENUMERATE_SYSCALL(set_process_boost) \ S(set_process_boost) \
__ENUMERATE_SYSCALL(chroot) \ S(chroot) \
__ENUMERATE_SYSCALL(pledge) \ S(pledge) \
__ENUMERATE_SYSCALL(unveil) \ S(unveil) \
__ENUMERATE_SYSCALL(perf_event) \ S(perf_event) \
__ENUMERATE_SYSCALL(shutdown) \ S(shutdown) \
__ENUMERATE_SYSCALL(get_stack_bounds) \ S(get_stack_bounds) \
__ENUMERATE_SYSCALL(ptrace) \ S(ptrace) \
__ENUMERATE_SYSCALL(minherit) \ S(minherit) \
__ENUMERATE_SYSCALL(sendfd) \ S(sendfd) \
__ENUMERATE_SYSCALL(recvfd) \ S(recvfd) \
__ENUMERATE_SYSCALL(sysconf) \ S(sysconf) \
__ENUMERATE_SYSCALL(set_process_name) S(set_process_name)
namespace Syscall { namespace Syscall {
enum Function { enum Function {
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
#define __ENUMERATE_REMOVED_SYSCALL(x) SC_##x,
#define __ENUMERATE_SYSCALL(x) SC_##x, #define __ENUMERATE_SYSCALL(x) SC_##x,
ENUMERATE_SYSCALLS ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
__Count __Count
}; };
@ -213,16 +210,11 @@ inline constexpr const char* to_string(Function function)
{ {
switch (function) { switch (function) {
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
#define __ENUMERATE_REMOVED_SYSCALL(x) \
case SC_##x: \
return #x " (removed)";
#define __ENUMERATE_SYSCALL(x) \ #define __ENUMERATE_SYSCALL(x) \
case SC_##x: \ case SC_##x: \
return #x; return #x;
ENUMERATE_SYSCALLS ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
default: default:
break; break;
} }
@ -507,10 +499,8 @@ inline u32 invoke(Function function, T1 arg1, T2 arg2, T3 arg3)
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#define __ENUMERATE_SYSCALL(x) using Syscall::SC_##x; #define __ENUMERATE_SYSCALL(x) using Syscall::SC_##x;
#define __ENUMERATE_REMOVED_SYSCALL(x) ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
ENUMERATE_SYSCALLS
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
#define syscall Syscall::invoke #define syscall Syscall::invoke
} }

View file

@ -76,13 +76,11 @@ void initialize()
#pragma GCC diagnostic ignored "-Wcast-function-type" #pragma GCC diagnostic ignored "-Wcast-function-type"
typedef int (Process::*Handler)(u32, u32, u32); typedef int (Process::*Handler)(u32, u32, u32);
#define __ENUMERATE_REMOVED_SYSCALL(x) nullptr,
#define __ENUMERATE_SYSCALL(x) reinterpret_cast<Handler>(&Process::sys$##x), #define __ENUMERATE_SYSCALL(x) reinterpret_cast<Handler>(&Process::sys$##x),
static Handler s_syscall_table[] = { static Handler s_syscall_table[] = {
ENUMERATE_SYSCALLS ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
}; };
#undef __ENUMERATE_SYSCALL #undef __ENUMERATE_SYSCALL
#undef __ENUMERATE_REMOVED_SYSCALL
int handle(RegisterState& regs, u32 function, u32 arg1, u32 arg2, u32 arg3) int handle(RegisterState& regs, u32 function, u32 arg1, u32 arg2, u32 arg3)
{ {

View file

@ -36,14 +36,11 @@
#if !defined __ENUMERATE_SYSCALL #if !defined __ENUMERATE_SYSCALL
# define __ENUMERATE_SYSCALL(x) SC_##x, # define __ENUMERATE_SYSCALL(x) SC_##x,
#endif #endif
#if !defined __ENUMERATE_REMOVED_SYSCALL
# define __ENUMERATE_REMOVED_SYSCALL(x)
#endif
#define SC_NARG 4 #define SC_NARG 4
Syscall::Function syscall_table[] = { Syscall::Function syscall_table[] = {
ENUMERATE_SYSCALLS ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
}; };
FlatPtr arg[SC_NARG]; FlatPtr arg[SC_NARG];