20#ifndef KERNEL_PROCESSOR_HOSTED_INTERRUPTMANAGER_H
21#define KERNEL_PROCESSOR_HOSTED_INTERRUPTMANAGER_H
22#include "pedigree/kernel/Spinlock.h"
23#include "pedigree/kernel/compiler.h"
24#include "pedigree/kernel/processor/InterruptManager.h"
25#include "pedigree/kernel/processor/state_forward.h"
26#include "pedigree/kernel/processor/types.h"
63 void signalShim(
int which,
void* siginfo,
void* meta,
bool fromUserspace);
68#if HOSTED && PEDIGREE_HOSTED_SMOKE_TESTS
69 using MutationLockHook = void (*)();
72 static EXPORTED_PUBLIC
void withMutationLockForTest(MutationLockHook hook);
79 static void interrupt(InterruptState& interruptState);
90 void setIst(
size_t nInterruptNumber,
size_t ist);
114 static bool m_ActionInstalled[MAX_SIGNAL];
116 static bool m_bQuiesced;
static void initialiseProcessor() INITIALISATION_ONLY
InterruptHandler * m_pDbgHandler[MAX_SIGNAL]
void setInterruptGate(size_t nInterruptNumber, uintptr_t interruptHandler) INITIALISATION_ONLY
void signalShim(int which, void *siginfo, void *meta, bool fromUserspace)
virtual size_t getDebugInterruptNumber() PURE
virtual bool registerInterruptHandlerDebugger(size_t nInterruptNumber, InterruptHandler *pHandler)
void setIst(size_t nInterruptNumber, size_t ist)
static HostedInterruptManager m_Instance
virtual bool registerInterruptHandler(size_t nInterruptNumber, InterruptHandler *pHandler)
static HostedInterruptManager & instance()
InterruptHandler * m_pHandler[MAX_SIGNAL]
virtual size_t getBreakpointInterruptNumber() PURE
struct sigaction getOriginalSigaction(int which) const
static void quiesceProcessor()
HostedInterruptManager() INITIALISATION_ONLY
static struct sigaction m_OriginalActions[MAX_SIGNAL]
Abstract base class for interrupt-handlers.
Handles interrupts and interrupt registrations from kernel components.
#define INITIALISATION_ONLY