The Pedigree Project 0.1
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
ThreadedIrqDispatcher::Line Class Reference
+ Collaboration diagram for ThreadedIrqDispatcher::Line:

Public Member Functions

void configure (ThreadedIrqDispatcher *owner, uint8_t line, DispatchCallback callback, void *callbackContext)
 
bool start ()
 
void beginStop ()
 
bool join ()
 
bool publishFromInterrupt (size_t cookie)
 
bool hasPending () const
 
bool isWorker (const Thread *thread) const
 
size_t pendingCookie () const
 
size_t activeCookie () const
 
size_t completedBatches () const
 
size_t completedCookie () const
 
uintptr_t workerIdentity () const
 
bool callbackActive () const
 
bool publicationClosed () const
 
void snapshotDiagnostics (IrqLineDiagnosticSnapshot &snapshot) const
 

Private Member Functions

int run ()
 
bool hasPendingForWorker () const
 
size_t pendingCookieForWorker () const
 
size_t takePendingCookie ()
 
 Line (const Line &)=delete
 
Lineoperator= (const Line &)=delete
 

Static Private Member Functions

static int workerEntry (void *context)
 
static bool generationReached (size_t current, size_t target)
 

Private Attributes

ThreadedIrqDispatcherm_Owner
 
DispatchCallback m_Callback
 
void * m_CallbackContext
 
Threadm_Thread
 
PerProcessorSchedulerm_Scheduler
 
WaitQueue m_WorkerWaiters
 
SchedulerWorkerWake m_WorkerWake
 
size_t m_WorkerProcessor
 
uint8_t m_Line
 
size_t * m_PendingCookies
 
size_t m_PendingCookieCount
 
size_t m_ActiveCookie
 
size_t m_CallbackActive
 
size_t m_PublicationState
 
size_t m_Started
 
size_t m_CompletedBatches
 
size_t m_CompletedCookie
 
size_t m_PendingSinceTimestamp
 
size_t m_ActiveCallbackStartedTimestamp
 
size_t m_LastWakeLatency
 
size_t m_MaximumWakeLatency
 
size_t m_LastCallbackRuntime
 
size_t m_MaximumCallbackRuntime
 

Static Private Attributes

static constexpr size_t PublicationClosed
 
static constexpr size_t PublicationCountMask = ~PublicationClosed
 

Detailed Description

Definition at line 143 of file ThreadedIrqDispatcher.h.

Constructor & Destructor Documentation

◆ Line()

ThreadedIrqDispatcher::Line::Line ( )

Definition at line 80 of file ThreadedIrqDispatcher.cc.

◆ ~Line()

ThreadedIrqDispatcher::Line::~Line ( )

Definition at line 105 of file ThreadedIrqDispatcher.cc.

Member Function Documentation

◆ activeCookie()

size_t ThreadedIrqDispatcher::Line::activeCookie ( ) const

Definition at line 339 of file ThreadedIrqDispatcher.cc.

◆ beginStop()

void ThreadedIrqDispatcher::Line::beginStop ( )

Definition at line 183 of file ThreadedIrqDispatcher.cc.

◆ callbackActive()

bool ThreadedIrqDispatcher::Line::callbackActive ( ) const

Definition at line 355 of file ThreadedIrqDispatcher.cc.

◆ completedBatches()

size_t ThreadedIrqDispatcher::Line::completedBatches ( ) const

Definition at line 343 of file ThreadedIrqDispatcher.cc.

◆ completedCookie()

size_t ThreadedIrqDispatcher::Line::completedCookie ( ) const

Definition at line 347 of file ThreadedIrqDispatcher.cc.

◆ configure()

void ThreadedIrqDispatcher::Line::configure ( ThreadedIrqDispatcher owner,
uint8_t  line,
DispatchCallback  callback,
void *  callbackContext 
)

Definition at line 112 of file ThreadedIrqDispatcher.cc.

◆ generationReached()

bool ThreadedIrqDispatcher::Line::generationReached ( size_t  current,
size_t  target 
)
staticprivate

Definition at line 515 of file ThreadedIrqDispatcher.cc.

◆ hasPending()

bool ThreadedIrqDispatcher::Line::hasPending ( ) const

Definition at line 296 of file ThreadedIrqDispatcher.cc.

◆ hasPendingForWorker()

bool ThreadedIrqDispatcher::Line::hasPendingForWorker ( ) const
private

Definition at line 499 of file ThreadedIrqDispatcher.cc.

◆ isWorker()

bool ThreadedIrqDispatcher::Line::isWorker ( const Thread thread) const

Definition at line 300 of file ThreadedIrqDispatcher.cc.

◆ join()

bool ThreadedIrqDispatcher::Line::join ( )

Definition at line 193 of file ThreadedIrqDispatcher.cc.

◆ pendingCookie()

size_t ThreadedIrqDispatcher::Line::pendingCookie ( ) const

Definition at line 304 of file ThreadedIrqDispatcher.cc.

◆ pendingCookieForWorker()

size_t ThreadedIrqDispatcher::Line::pendingCookieForWorker ( ) const
private

Definition at line 328 of file ThreadedIrqDispatcher.cc.

◆ publicationClosed()

bool ThreadedIrqDispatcher::Line::publicationClosed ( ) const

Definition at line 359 of file ThreadedIrqDispatcher.cc.

◆ publishFromInterrupt()

bool ThreadedIrqDispatcher::Line::publishFromInterrupt ( size_t  cookie)

Definition at line 217 of file ThreadedIrqDispatcher.cc.

◆ run()

int ThreadedIrqDispatcher::Line::run ( )
private

Definition at line 420 of file ThreadedIrqDispatcher.cc.

◆ snapshotDiagnostics()

void ThreadedIrqDispatcher::Line::snapshotDiagnostics ( IrqLineDiagnosticSnapshot snapshot) const

Definition at line 363 of file ThreadedIrqDispatcher.cc.

◆ start()

bool ThreadedIrqDispatcher::Line::start ( )

Definition at line 120 of file ThreadedIrqDispatcher.cc.

◆ takePendingCookie()

size_t ThreadedIrqDispatcher::Line::takePendingCookie ( )
private

Definition at line 503 of file ThreadedIrqDispatcher.cc.

◆ workerEntry()

int ThreadedIrqDispatcher::Line::workerEntry ( void *  context)
staticprivate

Definition at line 416 of file ThreadedIrqDispatcher.cc.

◆ workerIdentity()

uintptr_t ThreadedIrqDispatcher::Line::workerIdentity ( ) const

Definition at line 351 of file ThreadedIrqDispatcher.cc.

Member Data Documentation

◆ m_ActiveCallbackStartedTimestamp

size_t ThreadedIrqDispatcher::Line::m_ActiveCallbackStartedTimestamp
private

Definition at line 195 of file ThreadedIrqDispatcher.h.

◆ m_ActiveCookie

size_t ThreadedIrqDispatcher::Line::m_ActiveCookie
private

Definition at line 188 of file ThreadedIrqDispatcher.h.

◆ m_Callback

DispatchCallback ThreadedIrqDispatcher::Line::m_Callback
private

Definition at line 178 of file ThreadedIrqDispatcher.h.

◆ m_CallbackActive

size_t ThreadedIrqDispatcher::Line::m_CallbackActive
private

Definition at line 189 of file ThreadedIrqDispatcher.h.

◆ m_CallbackContext

void* ThreadedIrqDispatcher::Line::m_CallbackContext
private

Definition at line 179 of file ThreadedIrqDispatcher.h.

◆ m_CompletedBatches

size_t ThreadedIrqDispatcher::Line::m_CompletedBatches
private

Definition at line 192 of file ThreadedIrqDispatcher.h.

◆ m_CompletedCookie

size_t ThreadedIrqDispatcher::Line::m_CompletedCookie
private

Definition at line 193 of file ThreadedIrqDispatcher.h.

◆ m_LastCallbackRuntime

size_t ThreadedIrqDispatcher::Line::m_LastCallbackRuntime
private

Definition at line 198 of file ThreadedIrqDispatcher.h.

◆ m_LastWakeLatency

size_t ThreadedIrqDispatcher::Line::m_LastWakeLatency
private

Definition at line 196 of file ThreadedIrqDispatcher.h.

◆ m_Line

uint8_t ThreadedIrqDispatcher::Line::m_Line
private

Definition at line 185 of file ThreadedIrqDispatcher.h.

◆ m_MaximumCallbackRuntime

size_t ThreadedIrqDispatcher::Line::m_MaximumCallbackRuntime
private

Definition at line 199 of file ThreadedIrqDispatcher.h.

◆ m_MaximumWakeLatency

size_t ThreadedIrqDispatcher::Line::m_MaximumWakeLatency
private

Definition at line 197 of file ThreadedIrqDispatcher.h.

◆ m_Owner

ThreadedIrqDispatcher* ThreadedIrqDispatcher::Line::m_Owner
private

Definition at line 177 of file ThreadedIrqDispatcher.h.

◆ m_PendingCookieCount

size_t ThreadedIrqDispatcher::Line::m_PendingCookieCount
private

Definition at line 187 of file ThreadedIrqDispatcher.h.

◆ m_PendingCookies

size_t* ThreadedIrqDispatcher::Line::m_PendingCookies
private

Definition at line 186 of file ThreadedIrqDispatcher.h.

◆ m_PendingSinceTimestamp

size_t ThreadedIrqDispatcher::Line::m_PendingSinceTimestamp
private

Definition at line 194 of file ThreadedIrqDispatcher.h.

◆ m_PublicationState

size_t ThreadedIrqDispatcher::Line::m_PublicationState
mutableprivate

Definition at line 190 of file ThreadedIrqDispatcher.h.

◆ m_Scheduler

PerProcessorScheduler* ThreadedIrqDispatcher::Line::m_Scheduler
private

Definition at line 181 of file ThreadedIrqDispatcher.h.

◆ m_Started

size_t ThreadedIrqDispatcher::Line::m_Started
private

Definition at line 191 of file ThreadedIrqDispatcher.h.

◆ m_Thread

Thread* ThreadedIrqDispatcher::Line::m_Thread
private

Definition at line 180 of file ThreadedIrqDispatcher.h.

◆ m_WorkerProcessor

size_t ThreadedIrqDispatcher::Line::m_WorkerProcessor
private

Definition at line 184 of file ThreadedIrqDispatcher.h.

◆ m_WorkerWaiters

WaitQueue ThreadedIrqDispatcher::Line::m_WorkerWaiters
private

Definition at line 182 of file ThreadedIrqDispatcher.h.

◆ m_WorkerWake

SchedulerWorkerWake ThreadedIrqDispatcher::Line::m_WorkerWake
private

Definition at line 183 of file ThreadedIrqDispatcher.h.

◆ PublicationClosed

constexpr size_t ThreadedIrqDispatcher::Line::PublicationClosed
staticconstexprprivate
Initial value:
= static_cast<size_t>(1)
<< ((sizeof(size_t) * 8) - 1)

Definition at line 166 of file ThreadedIrqDispatcher.h.

◆ PublicationCountMask

constexpr size_t ThreadedIrqDispatcher::Line::PublicationCountMask = ~PublicationClosed
staticconstexprprivate

Definition at line 168 of file ThreadedIrqDispatcher.h.


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