|
The Pedigree Project
0.1
|
Inheritance diagram for HostedIrqManager:
Collaboration diagram for HostedIrqManager: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().
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
virtual |
Controls specific elements of a given IRQ
Reimplemented from IrqManager.
Definition at line 44 of file hosted/IrqManager.cc.
Referenced by instance().
Here is the caller graph for this function:| 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().
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
private |
The assignment operator
Referenced by ~HostedIrqManager().
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
virtual |
Register a PCI irq
Implements IrqManager.
Definition at line 62 of file hosted/IrqManager.cc.
References Device::getInterruptNumber(), and UNLIKELY.
Referenced by instance().
Here is the caller graph for this function:
|
virtual |
Called every millisecond, typically handles IRQ mitigation.
Reimplemented from IrqManager.
Definition at line 40 of file hosted/IrqManager.cc.
Referenced by instance().
Here is the caller graph for this function:
|
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().
Here is the caller graph for this function:
|
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.
1.8.11