20 #ifndef KERNEL_PROCESSOR_X86_INTERRUPTMANAGER_H 21 #define KERNEL_PROCESSOR_X86_INTERRUPTMANAGER_H 23 #include "pedigree/kernel/Spinlock.h" 24 #include "pedigree/kernel/compiler.h" 25 #include "pedigree/kernel/processor/InterruptManager.h" 26 #include "pedigree/kernel/processor/SyscallManager.h" 27 #include "pedigree/kernel/processor/types.h" 63 Service_t service, uintptr_t
function, uintptr_t p1 = 0,
64 uintptr_t p2 = 0, uintptr_t p3 = 0, uintptr_t p4 = 0, uintptr_t p5 = 0);
75 static void interrupt(InterruptState &interruptState);
83 size_t nInterruptNumber, uintptr_t interruptHandler,
virtual bool registerSyscallHandler(Service_t Service, SyscallHandler *pHandler)
#define INITIALISATION_ONLY
static X86InterruptManager m_Instance
Handles interrupts and interrupt registrations from kernel components.
void setTaskGate(size_t nInterruptNumber, uint16_t tssSeg) INITIALISATION_ONLY
InterruptHandler * m_pHandler[256]
InterruptHandler * m_pDbgHandler[256]
virtual ~X86InterruptManager()
static void initialiseProcessor() INITIALISATION_ONLY
SyscallHandler * m_pSyscallHandler[serviceEnd]
X86InterruptManager & operator=(const X86InterruptManager &)
GateDescriptor m_IDT[256]
virtual size_t getDebugInterruptNumber() PURE
X86InterruptManager() INITIALISATION_ONLY
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)
virtual size_t getBreakpointInterruptNumber() PURE
Abstract base class for interrupt-handlers.
static void interrupt(InterruptState &interruptState)
static X86InterruptManager & instance()
void setInterruptGate(size_t nInterruptNumber, uintptr_t interruptHandler, bool bUserspace) INITIALISATION_ONLY
virtual bool registerInterruptHandlerDebugger(size_t nInterruptNumber, InterruptHandler *pHandler)
virtual bool registerInterruptHandler(size_t nInterruptNumber, InterruptHandler *pHandler)