The Pedigree Project  0.1
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | List of all members
IrqManager Class Referenceabstract

#include <IrqManager.h>

+ Inheritance diagram for IrqManager:
+ Collaboration diagram for IrqManager:

Public Types

enum  ControlCode { MitigationThreshold }
 

Public Member Functions

virtual irq_id_t registerIsaIrqHandler (uint8_t irq, IrqHandler *handler, bool bEdge=false)=0
 
virtual irq_id_t registerPciIrqHandler (IrqHandler *handler, Device *pDevice)=0
 
virtual void acknowledgeIrq (irq_id_t Id)=0
 
virtual void unregisterHandler (irq_id_t Id, IrqHandler *handler)=0
 
virtual void enable (uint8_t irq, bool enable)=0
 
virtual void tick ()
 
virtual bool control (uint8_t irq, ControlCode code, size_t argument)
 

Protected Member Functions

 IrqManager ()
 
virtual ~IrqManager ()
 

Private Member Functions

 IrqManager (const IrqManager &)
 
IrqManageroperator= (const IrqManager &)
 

Detailed Description

This class handles IRQ (un)registration

Definition at line 33 of file include/pedigree/kernel/machine/IrqManager.h.

Member Enumeration Documentation

Control codes for the control function

Definition at line 37 of file include/pedigree/kernel/machine/IrqManager.h.

Constructor & Destructor Documentation

IrqManager::IrqManager ( )
protecteddefault

The default constructor

IrqManager::~IrqManager ( )
protectedvirtualdefault

The destructor

IrqManager::IrqManager ( const IrqManager )
private

The copy-constructor

Note
NOT implemented

Member Function Documentation

virtual void IrqManager::acknowledgeIrq ( irq_id_t  Id)
pure 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.

Parameters
[in]Idthe irq's identifier

Implemented in OpenPic, Pic, HostedIrqManager, Pic, and Heathrow.

bool IrqManager::control ( uint8_t  irq,
ControlCode  code,
size_t  argument 
)
virtual

Controls specific elements of a given IRQ

Reimplemented in Pic, and HostedIrqManager.

Definition at line 29 of file IrqManager.cc.

Referenced by Ehci::initialiseController().

+ Here is the caller graph for this function:

IrqManager& IrqManager::operator= ( const IrqManager )
private

The assignment operator

Note
NOT implemented
virtual irq_id_t IrqManager::registerIsaIrqHandler ( uint8_t  irq,
IrqHandler handler,
bool  bEdge = false 
)
pure virtual

Register an ISA irq

Parameters
[in]irqthe ISA irq number (from 0 to 15)
[in]handlerpointer to the IrqHandler class
[in]bEdgewhether this IRQ is edge triggered or not
Returns
the irq's identifier

Implemented in Pic, and HostedIrqManager.

Referenced by Pit::initialise(), HostedSchedulerTimer::initialise(), HostedTimer::initialise(), Rtc::initialise2(), CdiIrqHandler::irq(), Ne2k::Ne2k(), Nic3C90x::Nic3C90x(), and PciAtaController::PciAtaController().

+ Here is the caller graph for this function:

virtual irq_id_t IrqManager::registerPciIrqHandler ( IrqHandler handler,
Device pDevice 
)
pure virtual

Register a PCI irq

Implemented in Pic, and HostedIrqManager.

Referenced by Ehci::initialiseController().

+ Here is the caller graph for this function:

void IrqManager::tick ( )
virtual

Called every millisecond, typically handles IRQ mitigation.

Reimplemented in Pic, and HostedIrqManager.

Definition at line 25 of file IrqManager.cc.

Referenced by HostedTimer::irq(), and Rtc::irq().

+ Here is the caller graph for this function:

virtual void IrqManager::unregisterHandler ( irq_id_t  Id,
IrqHandler handler 
)
pure virtual

Unregister a previously registered IrqHandler

Parameters
[in]Idthe irq's identifier

Implemented in OpenPic, Pic, HostedIrqManager, Pic, and Heathrow.

Referenced by Pit::uninitialise(), HostedSchedulerTimer::uninitialise(), HostedTimer::uninitialise(), and Rtc::uninitialise().

+ Here is the caller graph for this function:


The documentation for this class was generated from the following files: