Files
FEX-Emu--FEX/Source/Tests/LinuxSyscalls/Syscalls/NotImplemented.cpp
T
Ryan Houdek 504b7a03ad Syscalls: Removes staging vector usage
This removes about half a millisecond from syscall handler registration.
2022-07-28 01:29:26 -07:00

57 lines
1.9 KiB
C++

/*
$info$
tags: LinuxSyscalls|syscalls-shared
$end_info$
*/
#include <FEXCore/Utils/LogManager.h>
#include "Tests/LinuxSyscalls/Syscalls.h"
#include "Tests/LinuxSyscalls/x64/Syscalls.h"
#include "Tests/LinuxSyscalls/x32/Syscalls.h"
#include <stdint.h>
#include <sys/epoll.h>
#define REGISTER_SYSCALL_NOT_IMPL(name) REGISTER_SYSCALL_IMPL(name, [](FEXCore::Core::CpuStateFrame *Frame) -> uint64_t { \
LogMan::Msg::DFmt("Using deprecated/removed syscall: " #name); \
return -ENOSYS; \
});
#define REGISTER_SYSCALL_NO_PERM(name) REGISTER_SYSCALL_IMPL(name, [](FEXCore::Core::CpuStateFrame *Frame) -> uint64_t { \
return -EPERM; \
});
#define REGISTER_SYSCALL_NO_ACCESS(name) REGISTER_SYSCALL_IMPL(name, [](FEXCore::Core::CpuStateFrame *Frame) -> uint64_t { \
return -EACCES; \
});
namespace FEX::HLE {
// these are removed/not implemented in the linux kernel we present
void RegisterNotImplemented(FEX::HLE::SyscallHandler *Handler) {
REGISTER_SYSCALL_NOT_IMPL(uselib);
REGISTER_SYSCALL_NOT_IMPL(create_module);
REGISTER_SYSCALL_NOT_IMPL(get_kernel_syms);
REGISTER_SYSCALL_NOT_IMPL(query_module);
REGISTER_SYSCALL_NOT_IMPL(nfsservctl); // Was removed in Linux 3.1
REGISTER_SYSCALL_NOT_IMPL(getpmsg);
REGISTER_SYSCALL_NOT_IMPL(putpmsg);
REGISTER_SYSCALL_NOT_IMPL(afs_syscall);
REGISTER_SYSCALL_NOT_IMPL(vserver);
REGISTER_SYSCALL_NOT_IMPL(_sysctl); // Was removed in Linux 5.5
REGISTER_SYSCALL_NO_PERM(vhangup);
REGISTER_SYSCALL_NO_PERM(reboot)
REGISTER_SYSCALL_NO_PERM(sethostname);
REGISTER_SYSCALL_NO_PERM(setdomainname);
REGISTER_SYSCALL_NO_PERM(kexec_load);
REGISTER_SYSCALL_NO_PERM(finit_module);
REGISTER_SYSCALL_NO_PERM(bpf);
REGISTER_SYSCALL_NO_PERM(lookup_dcookie);
REGISTER_SYSCALL_NO_PERM(init_module)
REGISTER_SYSCALL_NO_PERM(delete_module);
REGISTER_SYSCALL_NO_PERM(quotactl);
REGISTER_SYSCALL_NO_ACCESS(perf_event_open);
}
}