mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:18:11 +00:00
Kernel: Declare syscall handlers with "using" instead of "typedef"
Also use bit_cast to avoid -Wcast-function-type warning.
This commit is contained in:
parent
9d1b27263f
commit
3d12d0f408
1 changed files with 5 additions and 5 deletions
|
@ -88,15 +88,15 @@ UNMAP_AFTER_INIT void initialize()
|
|||
register_user_callable_interrupt_handler(syscall_vector, syscall_asm_entry);
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wcast-function-type"
|
||||
typedef KResultOr<FlatPtr> (Process::*Handler)(FlatPtr, FlatPtr, FlatPtr, FlatPtr);
|
||||
typedef KResultOr<FlatPtr> (Process::*HandlerWithRegisterState)(RegisterState&);
|
||||
using Handler = auto (Process::*)(FlatPtr, FlatPtr, FlatPtr, FlatPtr) -> KResultOr<FlatPtr>;
|
||||
using HandlerWithRegisterState = auto (Process::*)(RegisterState&) -> KResultOr<FlatPtr>;
|
||||
|
||||
struct HandlerMetadata {
|
||||
Handler handler;
|
||||
NeedsBigProcessLock needs_lock;
|
||||
};
|
||||
|
||||
#define __ENUMERATE_SYSCALL(sys_call, needs_lock) { reinterpret_cast<Handler>(&Process::sys$##sys_call), needs_lock },
|
||||
#define __ENUMERATE_SYSCALL(sys_call, needs_lock) { bit_cast<Handler>(&Process::sys$##sys_call), needs_lock },
|
||||
static const HandlerMetadata s_syscall_table[] = {
|
||||
ENUMERATE_SYSCALLS(__ENUMERATE_SYSCALL)
|
||||
};
|
||||
|
@ -153,7 +153,7 @@ KResultOr<FlatPtr> handle(RegisterState& regs, FlatPtr function, FlatPtr arg1, F
|
|||
KResultOr<FlatPtr> result { FlatPtr(nullptr) };
|
||||
if (function == SC_fork || function == SC_sigreturn) {
|
||||
// These syscalls want the RegisterState& rather than individual parameters.
|
||||
auto handler = (HandlerWithRegisterState)syscall_metadata.handler;
|
||||
auto handler = bit_cast<HandlerWithRegisterState>(syscall_metadata.handler);
|
||||
result = (process.*(handler))(regs);
|
||||
} else {
|
||||
result = (process.*(syscall_metadata.handler))(arg1, arg2, arg3, arg4);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue