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

#include <LocalApicTlbShootdown.h>

+ Collaboration diagram for LocalApicProcessorControlOwner:

Public Member Functions

bool tryAcquire (size_t processor)
 
bool ownedBy (size_t processor) const
 
bool activeBy (size_t processor) const
 
bool markQuiesced (size_t processor)
 
bool claimQuiesced (size_t processor)
 
bool claimAnyQuiesced (size_t processor)
 
bool claimAnyFailed (size_t processor)
 
bool quiescedBy (size_t processor) const
 
bool markTerminal (size_t processor)
 
bool claimTerminal (size_t processor)
 
bool terminalBy (size_t processor) const
 
bool markFailed (size_t processor)
 
bool failedBy (size_t processor) const
 
bool release (size_t processor)
 
bool owned () const
 

Static Public Attributes

static constexpr size_t MaxProcessors = 64
 

Private Attributes

Atomic< size_t > m_State
 

Static Private Attributes

static constexpr size_t QuiescedBit = size_t(1) << (sizeof(size_t) * 8 - 1)
 
static constexpr size_t TerminalBit = QuiescedBit >> 1
 
static constexpr size_t FailedBit = TerminalBit >> 1
 
static constexpr size_t PhaseMask = QuiescedBit | TerminalBit | FailedBit
 

Detailed Description

Serialises processor-control state and mutation-gate ownership.

The phase bits are part of the same atomic word as the owning processor, so no caller can observe a successful quiesce as ownerless between operations.

Definition at line 22 of file LocalApicTlbShootdown.h.

Constructor & Destructor Documentation

◆ LocalApicProcessorControlOwner()

LocalApicProcessorControlOwner::LocalApicProcessorControlOwner ( )
inline

Definition at line 26 of file LocalApicTlbShootdown.h.

Member Function Documentation

◆ activeBy()

bool LocalApicProcessorControlOwner::activeBy ( size_t  processor) const
inline

Definition at line 36 of file LocalApicTlbShootdown.h.

◆ claimAnyFailed()

bool LocalApicProcessorControlOwner::claimAnyFailed ( size_t  processor)
inline

Adopt an operation which returned only after its last barrier access.

Definition at line 67 of file LocalApicTlbShootdown.h.

◆ claimAnyQuiesced()

bool LocalApicProcessorControlOwner::claimAnyQuiesced ( size_t  processor)
inline

Adopt a completed reversible pause for irreversible terminal control.

Definition at line 51 of file LocalApicTlbShootdown.h.

◆ claimQuiesced()

bool LocalApicProcessorControlOwner::claimQuiesced ( size_t  processor)
inline

Definition at line 45 of file LocalApicTlbShootdown.h.

◆ claimTerminal()

bool LocalApicProcessorControlOwner::claimTerminal ( size_t  processor)
inline

Definition at line 91 of file LocalApicTlbShootdown.h.

◆ failedBy()

bool LocalApicProcessorControlOwner::failedBy ( size_t  processor) const
inline

Definition at line 105 of file LocalApicTlbShootdown.h.

◆ markFailed()

bool LocalApicProcessorControlOwner::markFailed ( size_t  processor)
inline

Definition at line 100 of file LocalApicTlbShootdown.h.

◆ markQuiesced()

bool LocalApicProcessorControlOwner::markQuiesced ( size_t  processor)
inline

Definition at line 40 of file LocalApicTlbShootdown.h.

◆ markTerminal()

bool LocalApicProcessorControlOwner::markTerminal ( size_t  processor)
inline

Definition at line 86 of file LocalApicTlbShootdown.h.

◆ owned()

bool LocalApicProcessorControlOwner::owned ( ) const
inline

Definition at line 113 of file LocalApicTlbShootdown.h.

◆ ownedBy()

bool LocalApicProcessorControlOwner::ownedBy ( size_t  processor) const
inline

Definition at line 32 of file LocalApicTlbShootdown.h.

◆ quiescedBy()

bool LocalApicProcessorControlOwner::quiescedBy ( size_t  processor) const
inline

Definition at line 82 of file LocalApicTlbShootdown.h.

◆ release()

bool LocalApicProcessorControlOwner::release ( size_t  processor)
inline

Definition at line 109 of file LocalApicTlbShootdown.h.

◆ terminalBy()

bool LocalApicProcessorControlOwner::terminalBy ( size_t  processor) const
inline

Definition at line 96 of file LocalApicTlbShootdown.h.

◆ tryAcquire()

bool LocalApicProcessorControlOwner::tryAcquire ( size_t  processor)
inline

Definition at line 28 of file LocalApicTlbShootdown.h.

Member Data Documentation

◆ FailedBit

constexpr size_t LocalApicProcessorControlOwner::FailedBit = TerminalBit >> 1
staticconstexprprivate

Definition at line 120 of file LocalApicTlbShootdown.h.

◆ m_State

Atomic<size_t> LocalApicProcessorControlOwner::m_State
private

Definition at line 122 of file LocalApicTlbShootdown.h.

◆ MaxProcessors

constexpr size_t LocalApicProcessorControlOwner::MaxProcessors = 64
staticconstexpr

Definition at line 24 of file LocalApicTlbShootdown.h.

◆ PhaseMask

constexpr size_t LocalApicProcessorControlOwner::PhaseMask = QuiescedBit | TerminalBit | FailedBit
staticconstexprprivate

Definition at line 121 of file LocalApicTlbShootdown.h.

◆ QuiescedBit

constexpr size_t LocalApicProcessorControlOwner::QuiescedBit = size_t(1) << (sizeof(size_t) * 8 - 1)
staticconstexprprivate

Definition at line 118 of file LocalApicTlbShootdown.h.

◆ TerminalBit

constexpr size_t LocalApicProcessorControlOwner::TerminalBit = QuiescedBit >> 1
staticconstexprprivate

Definition at line 119 of file LocalApicTlbShootdown.h.


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