Files
FEX-Emu--FEX/Source/Tools/LinuxEmulation/LinuxSyscalls/Syscalls/NotImplemented.cpp
T
Ryan Houdek 93ada89708 Linux: Move unimplement ustat and sysfs
AArch64 doesn't implement these and will return ENOSYS.
Moving them to NotImplemented so we can get a log if an application
tries to use these.
2024-02-27 02:39:36 -08:00

60 lines
2.0 KiB
C++

// SPDX-License-Identifier: MIT
/*
$info$
tags: LinuxSyscalls|syscalls-shared
$end_info$
*/
#include <FEXCore/Utils/LogManager.h>
#include "LinuxSyscalls/Syscalls.h"
#include "LinuxSyscalls/x64/Syscalls.h"
#include "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(ustat);
REGISTER_SYSCALL_NOT_IMPL(sysfs);
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);
}
}