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

#include <VirtualAddressSpace-internal.h>

+ Collaboration diagram for X64MappingMutationScope:

Classes

struct  LockState
 

Public Member Functions

void lock (Spinlock &lock)
 
void unlock (Spinlock &lock)
 
void relock (Spinlock &lock)
 
bool invalidate (void *virtualAddress)
 
bool failed () const
 
void panicInvalidationFailure () NORETURN
 
void panicWithoutRestoringInterrupts (const char *message) NORETURN
 

Private Member Functions

void finish (bool restoreInterrupts)
 

Private Attributes

TlbInvalidationGuard m_Invalidation
 
bool m_RestoreInterrupts
 
LockState m_Locks [2]
 
size_t m_LockCount
 
TlbInvalidationResult m_Result
 
bool m_Coordinator
 
bool m_Finished
 

Detailed Description

Keeps interrupts suppressed until every VAS lock and the mutation lease are retired. This ordering prevents terminal processor control from racing a stale PTE with either an IRQ callback or another mapper.

Definition at line 96 of file VirtualAddressSpace-internal.h.

Constructor & Destructor Documentation

◆ X64MappingMutationScope()

X64MappingMutationScope::X64MappingMutationScope ( )
inline

Definition at line 98 of file VirtualAddressSpace-internal.h.

◆ ~X64MappingMutationScope()

X64MappingMutationScope::~X64MappingMutationScope ( )
inline

Definition at line 109 of file VirtualAddressSpace-internal.h.

Member Function Documentation

◆ failed()

bool X64MappingMutationScope::failed ( ) const
inline

Definition at line 154 of file VirtualAddressSpace-internal.h.

◆ finish()

void X64MappingMutationScope::finish ( bool  restoreInterrupts)
inlineprivate

Definition at line 182 of file VirtualAddressSpace-internal.h.

◆ invalidate()

bool X64MappingMutationScope::invalidate ( void *  virtualAddress)
inline

Definition at line 144 of file VirtualAddressSpace-internal.h.

◆ lock()

void X64MappingMutationScope::lock ( Spinlock lock)
inline

Definition at line 113 of file VirtualAddressSpace-internal.h.

◆ panicInvalidationFailure()

void X64MappingMutationScope::panicInvalidationFailure ( )
inline

Definition at line 158 of file VirtualAddressSpace-internal.h.

◆ panicWithoutRestoringInterrupts()

void X64MappingMutationScope::panicWithoutRestoringInterrupts ( const char *  message)
inline

Definition at line 171 of file VirtualAddressSpace-internal.h.

◆ relock()

void X64MappingMutationScope::relock ( Spinlock lock)
inline

Definition at line 132 of file VirtualAddressSpace-internal.h.

◆ unlock()

void X64MappingMutationScope::unlock ( Spinlock lock)
inline

Definition at line 120 of file VirtualAddressSpace-internal.h.

Member Data Documentation

◆ m_Coordinator

bool X64MappingMutationScope::m_Coordinator
private

Definition at line 208 of file VirtualAddressSpace-internal.h.

◆ m_Finished

bool X64MappingMutationScope::m_Finished
private

Definition at line 209 of file VirtualAddressSpace-internal.h.

◆ m_Invalidation

TlbInvalidationGuard X64MappingMutationScope::m_Invalidation
private

Definition at line 203 of file VirtualAddressSpace-internal.h.

◆ m_LockCount

size_t X64MappingMutationScope::m_LockCount
private

Definition at line 206 of file VirtualAddressSpace-internal.h.

◆ m_Locks

LockState X64MappingMutationScope::m_Locks[2]
private

Definition at line 205 of file VirtualAddressSpace-internal.h.

◆ m_RestoreInterrupts

bool X64MappingMutationScope::m_RestoreInterrupts
private

Definition at line 204 of file VirtualAddressSpace-internal.h.

◆ m_Result

TlbInvalidationResult X64MappingMutationScope::m_Result
private

Definition at line 207 of file VirtualAddressSpace-internal.h.


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