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

#include <LocalApicTlbShootdown.h>

+ Collaboration diagram for LocalApicTlbMutationGate:

Public Types

enum class  State : size_t { Open , ReversibleClosed , TerminalClosed }
 

Public Member Functions

bool tryEnter ()
 
bool leave ()
 
bool closeReversible ()
 
bool closeTerminal ()
 
bool reopen ()
 
bool cancelClose ()
 
bool closed () const
 
bool reversibleClosed () const
 
bool terminalClosed () const
 
State state () const
 
bool drained () const
 
size_t active () const
 

Private Attributes

Atomic< size_t > m_State
 
Atomic< size_t > m_Active
 

Detailed Description

Admission barrier spanning a page-table mutation and its shootdown.

Closing first and then waiting for drain gives processor retirement a stable point at which no CPU can be between changing a PTE and publishing the corresponding invalidation.

Definition at line 132 of file LocalApicTlbShootdown.h.

Member Enumeration Documentation

◆ State

enum class LocalApicTlbMutationGate::State : size_t
strong

Definition at line 134 of file LocalApicTlbShootdown.h.

Constructor & Destructor Documentation

◆ LocalApicTlbMutationGate()

LocalApicTlbMutationGate::LocalApicTlbMutationGate ( )
inline

Definition at line 136 of file LocalApicTlbShootdown.h.

Member Function Documentation

◆ active()

size_t LocalApicTlbMutationGate::active ( ) const
inline

Definition at line 217 of file LocalApicTlbShootdown.h.

◆ cancelClose()

bool LocalApicTlbMutationGate::cancelClose ( )
inline

Abandon a close before any processor-control state has changed.

A debugger can interrupt the local processor while it owns an admission lease. In that case drain cannot complete until the interrupted code is resumed, so the failed quiesce attempt must restore admission while that existing lease is still active.

Definition at line 192 of file LocalApicTlbShootdown.h.

◆ closed()

bool LocalApicTlbMutationGate::closed ( ) const
inline

Definition at line 197 of file LocalApicTlbShootdown.h.

◆ closeReversible()

bool LocalApicTlbMutationGate::closeReversible ( )
inline

Definition at line 162 of file LocalApicTlbShootdown.h.

◆ closeTerminal()

bool LocalApicTlbMutationGate::closeTerminal ( )
inline

Permanently reject new mapping mutations. This transition is idempotent.

Definition at line 168 of file LocalApicTlbShootdown.h.

◆ drained()

bool LocalApicTlbMutationGate::drained ( ) const
inline

Definition at line 213 of file LocalApicTlbShootdown.h.

◆ leave()

bool LocalApicTlbMutationGate::leave ( )
inline

Definition at line 151 of file LocalApicTlbShootdown.h.

◆ reopen()

bool LocalApicTlbMutationGate::reopen ( )
inline

Definition at line 179 of file LocalApicTlbShootdown.h.

◆ reversibleClosed()

bool LocalApicTlbMutationGate::reversibleClosed ( ) const
inline

Definition at line 201 of file LocalApicTlbShootdown.h.

◆ state()

State LocalApicTlbMutationGate::state ( ) const
inline

Definition at line 209 of file LocalApicTlbShootdown.h.

◆ terminalClosed()

bool LocalApicTlbMutationGate::terminalClosed ( ) const
inline

Definition at line 205 of file LocalApicTlbShootdown.h.

◆ tryEnter()

bool LocalApicTlbMutationGate::tryEnter ( )
inline

Definition at line 138 of file LocalApicTlbShootdown.h.

Member Data Documentation

◆ m_Active

Atomic<size_t> LocalApicTlbMutationGate::m_Active
private

Definition at line 223 of file LocalApicTlbShootdown.h.

◆ m_State

Atomic<size_t> LocalApicTlbMutationGate::m_State
private

Definition at line 222 of file LocalApicTlbShootdown.h.


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