The Pedigree Project 0.1
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
IrqPolicy Class Reference

#include <IrqManager.h>

+ Collaboration diagram for IrqPolicy:

Public Member Functions

constexpr IrqPolicy (IrqTrigger trigger, IrqControllerAck controllerAck, IrqLineRelease lineRelease)
 
constexpr IrqTrigger trigger () const
 
constexpr IrqControllerAck controllerAck () const
 
constexpr IrqLineRelease lineRelease () const
 
constexpr bool validForHard () const
 
constexpr bool validForThreaded () const
 
constexpr bool operator== (const IrqPolicy &other) const
 
constexpr bool operator!= (const IrqPolicy &other) const
 

Static Public Member Functions

static constexpr IrqPolicy edgeHard ()
 
static constexpr IrqPolicy edgeThreaded ()
 
static constexpr IrqPolicy levelHard ()
 
static constexpr IrqPolicy levelThreaded ()
 
static constexpr IrqPolicy pciIntxHard ()
 
static constexpr IrqPolicy pciIntxThreaded ()
 
static constexpr IrqPolicy syntheticHard ()
 
static constexpr IrqPolicy syntheticThreaded ()
 

Private Member Functions

constexpr bool valid () const
 

Private Attributes

IrqTrigger m_Trigger
 
IrqControllerAck m_ControllerAck
 
IrqLineRelease m_LineRelease
 

Detailed Description

Orthogonal interrupt-line delivery policy.

The hard stage is either a HardIrqHandler callback or publication to an IrqHandler worker. Device acknowledgement remains the handler's responsibility: a split hard callback must quiesce its source before it defers, while a normal level-triggered worker runs with the controller line masked until it reports completion.

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

Constructor & Destructor Documentation

◆ IrqPolicy()

constexpr IrqPolicy::IrqPolicy ( IrqTrigger  trigger,
IrqControllerAck  controllerAck,
IrqLineRelease  lineRelease 
)
inlineconstexpr

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

Member Function Documentation

◆ controllerAck()

constexpr IrqControllerAck IrqPolicy::controllerAck ( ) const
inlineconstexpr

◆ edgeHard()

static constexpr IrqPolicy IrqPolicy::edgeHard ( )
inlinestaticconstexpr

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

◆ edgeThreaded()

static constexpr IrqPolicy IrqPolicy::edgeThreaded ( )
inlinestaticconstexpr

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

◆ levelHard()

static constexpr IrqPolicy IrqPolicy::levelHard ( )
inlinestaticconstexpr

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

◆ levelThreaded()

static constexpr IrqPolicy IrqPolicy::levelThreaded ( )
inlinestaticconstexpr

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

◆ lineRelease()

constexpr IrqLineRelease IrqPolicy::lineRelease ( ) const
inlineconstexpr

◆ operator!=()

constexpr bool IrqPolicy::operator!= ( const IrqPolicy other) const
inlineconstexpr

◆ operator==()

constexpr bool IrqPolicy::operator== ( const IrqPolicy other) const
inlineconstexpr

◆ pciIntxHard()

static constexpr IrqPolicy IrqPolicy::pciIntxHard ( )
inlinestaticconstexpr

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

◆ pciIntxThreaded()

static constexpr IrqPolicy IrqPolicy::pciIntxThreaded ( )
inlinestaticconstexpr

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

◆ syntheticHard()

static constexpr IrqPolicy IrqPolicy::syntheticHard ( )
inlinestaticconstexpr

◆ syntheticThreaded()

static constexpr IrqPolicy IrqPolicy::syntheticThreaded ( )
inlinestaticconstexpr

◆ trigger()

constexpr IrqTrigger IrqPolicy::trigger ( ) const
inlineconstexpr

◆ valid()

constexpr bool IrqPolicy::valid ( ) const
inlineconstexprprivate

◆ validForHard()

constexpr bool IrqPolicy::validForHard ( ) const
inlineconstexpr

◆ validForThreaded()

constexpr bool IrqPolicy::validForThreaded ( ) const
inlineconstexpr

Member Data Documentation

◆ m_ControllerAck

IrqControllerAck IrqPolicy::m_ControllerAck
private

◆ m_LineRelease

IrqLineRelease IrqPolicy::m_LineRelease
private

◆ m_Trigger

IrqTrigger IrqPolicy::m_Trigger
private

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