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:
parent
a619943001
commit
83a4fbf548
Notes:
sideshowbarker
2024-07-19 04:19:34 +09:00
Author: https://github.com/awesomekling
Commit: 83a4fbf548
3 changed files with 154 additions and 169 deletions
|
@ -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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue