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

#include <RtcAlarmQueue.h>

+ Collaboration diagram for RtcAlarmQueue:

Classes

class  Record
 
struct  Removal
 

Public Types

enum class  RemovalDisposition { NotFound , Removed , SelfDeferred , RemoteInFlight }
 

Public Member Functions

Record * takeReusable ()
 
void add (Record *record)
 
Record * claimDue (uint64_t now, void *owner)
 
Removal removeFirst (void *event, void *owner)
 
Record * removeAllQueued (void *event, void *owner, bool &remoteInFlight, bool &selfDeferred)
 
bool hasRemoteInFlight (void *event, void *owner) const
 
void completeDispatch (Record *record)
 
void recycleList (Record *records)
 
Record * detachActive ()
 
Record * detachFree ()
 
size_t activeCount () const
 
size_t freeCount () const
 

Static Public Member Functions

template<typename Context >
static void * dispatchOwnerForContext (Context &context)
 

Private Member Functions

void unlink (Record *previous, Record *record)
 
void recycle (Record *record)
 

Private Attributes

Record * m_pFirst
 
Record * m_pLast
 
Record * m_pFree
 

Detailed Description

Allocation-free ownership state for RTC alarms.

The caller serialises every operation. Claimed records remain visible until completeDispatch(), so a remote remover can distinguish a committed delivery from an alarm which is still safe to cancel. A same-context remover cannot drain its own stack and is therefore recorded as deferred.

Definition at line 23 of file RtcAlarmQueue.h.

Member Enumeration Documentation

◆ RemovalDisposition

enum class RtcAlarmQueue::RemovalDisposition
strong

Definition at line 98 of file RtcAlarmQueue.h.

Constructor & Destructor Documentation

◆ RtcAlarmQueue()

RtcAlarmQueue::RtcAlarmQueue ( )
inline

Definition at line 111 of file RtcAlarmQueue.h.

Member Function Documentation

◆ activeCount()

size_t RtcAlarmQueue::activeCount ( ) const
inline

Definition at line 253 of file RtcAlarmQueue.h.

◆ add()

void RtcAlarmQueue::add ( Record *  record)
inline

Definition at line 122 of file RtcAlarmQueue.h.

◆ claimDue()

Record * RtcAlarmQueue::claimDue ( uint64_t  now,
void *  owner 
)
inline

Definition at line 136 of file RtcAlarmQueue.h.

◆ completeDispatch()

void RtcAlarmQueue::completeDispatch ( Record *  record)
inline

Definition at line 217 of file RtcAlarmQueue.h.

◆ detachActive()

Record * RtcAlarmQueue::detachActive ( )
inline

Definition at line 240 of file RtcAlarmQueue.h.

◆ detachFree()

Record * RtcAlarmQueue::detachFree ( )
inline

Definition at line 247 of file RtcAlarmQueue.h.

◆ dispatchOwnerForContext()

template<typename Context >
static void * RtcAlarmQueue::dispatchOwnerForContext ( Context &  context)
inlinestatic

Distinguish preemptible workers which happen to run on the same CPU.

Definition at line 27 of file RtcAlarmQueue.h.

◆ freeCount()

size_t RtcAlarmQueue::freeCount ( ) const
inline

Definition at line 261 of file RtcAlarmQueue.h.

◆ hasRemoteInFlight()

bool RtcAlarmQueue::hasRemoteInFlight ( void *  event,
void *  owner 
) const
inline

Definition at line 207 of file RtcAlarmQueue.h.

◆ recycle()

void RtcAlarmQueue::recycle ( Record *  record)
inlineprivate

Definition at line 282 of file RtcAlarmQueue.h.

◆ recycleList()

void RtcAlarmQueue::recycleList ( Record *  records)
inline

Definition at line 231 of file RtcAlarmQueue.h.

◆ removeAllQueued()

Record * RtcAlarmQueue::removeAllQueued ( void *  event,
void *  owner,
bool &  remoteInFlight,
bool &  selfDeferred 
)
inline

Definition at line 170 of file RtcAlarmQueue.h.

◆ removeFirst()

Removal RtcAlarmQueue::removeFirst ( void *  event,
void *  owner 
)
inline

Definition at line 148 of file RtcAlarmQueue.h.

◆ takeReusable()

Record * RtcAlarmQueue::takeReusable ( )
inline

Definition at line 113 of file RtcAlarmQueue.h.

◆ unlink()

void RtcAlarmQueue::unlink ( Record *  previous,
Record *  record 
)
inlineprivate

Definition at line 270 of file RtcAlarmQueue.h.

Member Data Documentation

◆ m_pFirst

Record* RtcAlarmQueue::m_pFirst
private

Definition at line 288 of file RtcAlarmQueue.h.

◆ m_pFree

Record* RtcAlarmQueue::m_pFree
private

Definition at line 290 of file RtcAlarmQueue.h.

◆ m_pLast

Record* RtcAlarmQueue::m_pLast
private

Definition at line 289 of file RtcAlarmQueue.h.


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