20#include "pedigree/kernel/Log.h"
21#include "pedigree/kernel/process/Scheduler.h"
22#include "pedigree/kernel/processor/KernelCoreSyscallManager.h"
23#include "pedigree/kernel/processor/SyscallManager.h"
24#include "pedigree/kernel/processor/Syscalls.h"
25#include "pedigree/kernel/processor/state.h"
33void KernelCoreSyscallManager::initialise() {
34 for (
int i = 0; i < 16; i++) {
38 FATAL(
"Kernel-core syscall service registration failed.");
43 uintptr_t p3, uintptr_t p4, uintptr_t p5) {
54 switch (state.getSyscallNumber()) {
61 if (state.getSyscallNumber() >= 16 ||
m_Functions[state.getSyscallNumber()] == 0) {
62 ERROR(
"KernelCoreSyscallManager: invalid syscall received: " <<
Dec
63 << state.getSyscallNumber());
66 return m_Functions[state.getSyscallNumber()](state);
virtual uintptr_t syscall(SyscallState &state)
virtual ~KernelCoreSyscallManager()
uintptr_t call(Function_t function, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0, uintptr_t p5=0)
KernelCoreSyscallManager()
SyscallCallback m_Functions[16]
uintptr_t registerSyscall(Function_t function, SyscallCallback func)
static KernelCoreSyscallManager m_Instance
static Scheduler & instance()
virtual uintptr_t syscall(Service_t service, uintptr_t function, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0, uintptr_t p5=0)=0
static EXPORTED_PUBLIC SyscallManager & instance()