The Pedigree Project
0.1
|
Public Member Functions | |
virtual irq_id_t | registerIsaIrqHandler (uint8_t irq, IrqHandler *handler, bool bEdge=false) |
virtual irq_id_t | registerPciIrqHandler (IrqHandler *handler, Device *pDevice) |
virtual void | acknowledgeIrq (irq_id_t Id) |
virtual void | unregisterHandler (irq_id_t Id, IrqHandler *handler) |
bool | initialise () INITIALISATION_ONLY |
virtual void | tick () |
virtual bool | control (uint8_t irq, ControlCode code, size_t argument) |
virtual void | enable (uint8_t irq, bool enable) |
Static Public Member Functions | |
static HostedIrqManager & | instance () |
Private Member Functions | |
HostedIrqManager () INITIALISATION_ONLY | |
virtual | ~HostedIrqManager () |
HostedIrqManager (const HostedIrqManager &) | |
HostedIrqManager & | operator= (const HostedIrqManager &) |
virtual void | interrupt (size_t interruptNumber, InterruptState &state) |
virtual | ~InterruptHandler () |
Private Attributes | |
List< IrqHandler * > | m_Handler [2] |
Spinlock | m_Lock |
Static Private Attributes | |
static HostedIrqManager | m_Instance |
Additional Inherited Members | |
Public Types inherited from IrqManager | |
enum | ControlCode { MitigationThreshold } |
Protected Member Functions inherited from IrqManager | |
IrqManager () | |
virtual | ~IrqManager () |
Definition at line 31 of file kernel/machine/hosted/IrqManager.h.
|
private |
The default constructor
Definition at line 114 of file hosted/IrqManager.cc.
References List< T, nodePoolSize >::clear(), and m_Handler.
Referenced by instance(), and ~HostedIrqManager().
|
inlineprivatevirtual |
The destructor
Definition at line 70 of file kernel/machine/hosted/IrqManager.h.
References HostedIrqManager(), interrupt(), and operator=().
|
private |
The copy-constructor
|
virtual |
Acknoledge the IRQ reception, in case you returned false in the IrqHandler::irq() function. If this is not called there won't be any following irqs.
[in] | Id | the irq's identifier |
Implements IrqManager.
Definition at line 76 of file hosted/IrqManager.cc.
Referenced by instance().
|
virtual |
Controls specific elements of a given IRQ
Reimplemented from IrqManager.
Definition at line 44 of file hosted/IrqManager.cc.
Referenced by instance().
bool HostedIrqManager::initialise | ( | ) |
Initialises the PIC hardware and registers the interrupts with the InterruptManager.
Definition at line 96 of file hosted/IrqManager.cc.
References InterruptManager::instance(), and InterruptManager::registerInterruptHandler().
Referenced by HostedMachine::initialise(), and instance().
|
inlinestatic |
Get the HostedIrqManager class instance
Definition at line 36 of file kernel/machine/hosted/IrqManager.h.
References acknowledgeIrq(), control(), HostedIrqManager(), INITIALISATION_ONLY, initialise(), m_Instance, registerIsaIrqHandler(), registerPciIrqHandler(), tick(), and unregisterHandler().
Referenced by HostedMachine::getNumVga(), and HostedMachine::initialise().
|
privatevirtual |
Called when the handler is registered with the interrupt manager and the interrupt occurred
[in] | nInterruptNumber | the interrupt number |
[in] | state | reference to the state before the interrupt |
Implements InterruptHandler.
Definition at line 122 of file hosted/IrqManager.cc.
References List< T, nodePoolSize >::end(), LIKELY, m_Handler, and NOTICE.
Referenced by ~HostedIrqManager().
|
private |
The assignment operator
Referenced by ~HostedIrqManager().
|
virtual |
Register an ISA irq
[in] | irq | the ISA irq number (from 0 to 15) |
[in] | handler | pointer to the IrqHandler class |
[in] | bEdge | whether this IRQ is edge triggered or not |
Implements IrqManager.
Definition at line 49 of file hosted/IrqManager.cc.
References UNLIKELY.
Referenced by instance().
|
virtual |
Register a PCI irq
Implements IrqManager.
Definition at line 62 of file hosted/IrqManager.cc.
References Device::getInterruptNumber(), and UNLIKELY.
Referenced by instance().
|
virtual |
Called every millisecond, typically handles IRQ mitigation.
Reimplemented from IrqManager.
Definition at line 40 of file hosted/IrqManager.cc.
Referenced by instance().
|
virtual |
Unregister a previously registered IrqHandler
[in] | Id | the irq's identifier |
Implements IrqManager.
Definition at line 80 of file hosted/IrqManager.cc.
References List< T, nodePoolSize >::end().
Referenced by instance().
|
private |
The IRQ handler
Definition at line 86 of file kernel/machine/hosted/IrqManager.h.
Referenced by HostedIrqManager(), and interrupt().
|
staticprivate |
The HostedIrqManager instance
Definition at line 92 of file kernel/machine/hosted/IrqManager.h.
Referenced by instance().
|
private |
Main lock for all modifications
Definition at line 89 of file kernel/machine/hosted/IrqManager.h.