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

#include <PicIrqState.h>

+ Collaboration diagram for PicHardTailQueue:

Public Member Functions

bool publish (uint8_t irq, const PicHardTailRecord &record)
 
bool take (uint8_t irq, PicHardTailRecord &record)
 
void complete (uint8_t irq)
 
template<typename Finalizer >
bool consume (uint8_t irq, Finalizer &&finalizer)
 
bool pending (uint8_t irq) const
 

Static Public Attributes

static constexpr size_t LineCount = PicIrqState::LineCount
 

Private Member Functions

 PicHardTailQueue (const PicHardTailQueue &)=delete
 
PicHardTailQueueoperator= (const PicHardTailQueue &)=delete
 

Private Attributes

size_t m_States [LineCount]
 
PicHardTailRecord m_Records [LineCount]
 

Static Private Attributes

static constexpr size_t Empty = 0
 
static constexpr size_t Claimed = 1
 
static constexpr size_t Ready = 2
 

Detailed Description

One lock-free terminal record per 8259 input.

A line which still owes EOI cannot deliver another occurrence. A line acknowledged before its hard stage still cannot produce a second rich tail while the first is pending: its next entry sees controller ownership and is reduced to the counted fail-closed path. The caller keeps that counted path as an overflow fallback rather than waiting here.

Definition at line 903 of file PicIrqState.h.

Constructor & Destructor Documentation

◆ PicHardTailQueue()

PicHardTailQueue::PicHardTailQueue ( )
inline

Definition at line 907 of file PicIrqState.h.

Member Function Documentation

◆ complete()

void PicHardTailQueue::complete ( uint8_t  irq)
inline

Definition at line 942 of file PicIrqState.h.

◆ consume()

template<typename Finalizer >
bool PicHardTailQueue::consume ( uint8_t  irq,
Finalizer &&  finalizer 
)
inline

Keeps the slot claimed until all terminal actions have returned.

Definition at line 952 of file PicIrqState.h.

◆ pending()

bool PicHardTailQueue::pending ( uint8_t  irq) const
inline

Definition at line 962 of file PicIrqState.h.

◆ publish()

bool PicHardTailQueue::publish ( uint8_t  irq,
const PicHardTailRecord record 
)
inline

Definition at line 913 of file PicIrqState.h.

◆ take()

bool PicHardTailQueue::take ( uint8_t  irq,
PicHardTailRecord record 
)
inline

Definition at line 928 of file PicIrqState.h.

Member Data Documentation

◆ Claimed

constexpr size_t PicHardTailQueue::Claimed = 1
staticconstexprprivate

Definition at line 968 of file PicIrqState.h.

◆ Empty

constexpr size_t PicHardTailQueue::Empty = 0
staticconstexprprivate

Definition at line 967 of file PicIrqState.h.

◆ LineCount

constexpr size_t PicHardTailQueue::LineCount = PicIrqState::LineCount
staticconstexpr

Definition at line 905 of file PicIrqState.h.

◆ m_Records

PicHardTailRecord PicHardTailQueue::m_Records[LineCount]
private

Definition at line 972 of file PicIrqState.h.

◆ m_States

size_t PicHardTailQueue::m_States[LineCount]
private

Definition at line 971 of file PicIrqState.h.

◆ Ready

constexpr size_t PicHardTailQueue::Ready = 2
staticconstexprprivate

Definition at line 969 of file PicIrqState.h.


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