Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::Mutex Class Referencefinal

Reentrant mutex with ownership tracking. More...

#include <mutex.h>

Inheritance diagram for contur::Mutex:

Public Member Functions

 Mutex ()
 Constructs an unlocked mutex.
 ~Mutex () override
 Destroys mutex.
 Mutex (const Mutex &)=delete
 Copy construction is disabled.
Mutexoperator= (const Mutex &)=delete
 Copy assignment is disabled.
 Mutex (Mutex &&) noexcept
 Move-constructs mutex state.
Mutexoperator= (Mutex &&) noexcept
 Move-assigns mutex state.
Result< void > acquire (ProcessId pid) override
 Acquires the mutex for process pid.
Result< void > release (ProcessId pid) override
 Releases the mutex held by process pid.
Result< void > tryAcquire (ProcessId pid) override
 Attempts immediate acquire without enqueueing waiters.
std::string_view name () const noexcept override
 Primitive name for diagnostics.
SyncLayer layer () const noexcept override
 Layer classification for synchronization model split.
Result< void > registerProcessPriority (ProcessId pid, PriorityLevel basePriority)
 Registers process base priority used by inheritance logic.
PriorityLevel effectivePriority (ProcessId pid) const noexcept
 Effective priority after inheritance boosts.
PriorityLevel basePriority (ProcessId pid) const noexcept
 Registered base priority.
bool isLocked () const noexcept
 True when the mutex is owned by some process.
std::optional< ProcessIdowner () const noexcept
 Current owner process ID, if locked.
std::size_t recursionDepth () const noexcept
 Reentrancy depth for owner.
std::size_t waitingCount () const noexcept
 Number of waiting processes.
Public Member Functions inherited from contur::ISyncPrimitive
virtual ~ISyncPrimitive ()=default

Private Attributes

std::unique_ptr< Impl > impl_

Detailed Description

Reentrant mutex with ownership tracking.

Definition at line 15 of file mutex.h.

Constructor & Destructor Documentation

◆ Mutex() [1/3]

contur::Mutex::Mutex ( )

Constructs an unlocked mutex.

Referenced by Mutex(), Mutex(), operator=(), and operator=().

◆ ~Mutex()

contur::Mutex::~Mutex ( )
override

Destroys mutex.

◆ Mutex() [2/3]

contur::Mutex::Mutex ( const Mutex & )
delete

Copy construction is disabled.

References Mutex().

◆ Mutex() [3/3]

contur::Mutex::Mutex ( Mutex && )
noexcept

Move-constructs mutex state.

References Mutex().

Member Function Documentation

◆ acquire()

Result< void > contur::Mutex::acquire ( ProcessId pid)
nodiscardoverridevirtual

Acquires the mutex for process pid.

Returns
Ok when acquired; ResourceBusy when owned by another process.

Implements contur::ISyncPrimitive.

References acquire().

Referenced by acquire().

◆ basePriority()

PriorityLevel contur::Mutex::basePriority ( ProcessId pid) const
nodiscardnoexcept

Registered base priority.

References basePriority().

Referenced by basePriority(), and registerProcessPriority().

◆ effectivePriority()

PriorityLevel contur::Mutex::effectivePriority ( ProcessId pid) const
nodiscardnoexcept

Effective priority after inheritance boosts.

References effectivePriority().

Referenced by effectivePriority().

◆ isLocked()

bool contur::Mutex::isLocked ( ) const
nodiscardnoexcept

True when the mutex is owned by some process.

References isLocked().

Referenced by isLocked().

◆ layer()

SyncLayer contur::Mutex::layer ( ) const
nodiscardoverridevirtualnoexcept

Layer classification for synchronization model split.

Implements contur::ISyncPrimitive.

References layer().

Referenced by layer().

◆ name()

std::string_view contur::Mutex::name ( ) const
nodiscardoverridevirtualnoexcept

Primitive name for diagnostics.

Implements contur::ISyncPrimitive.

References name().

Referenced by name().

◆ operator=() [1/2]

Mutex & contur::Mutex::operator= ( const Mutex & )
delete

Copy assignment is disabled.

References Mutex().

◆ operator=() [2/2]

Mutex & contur::Mutex::operator= ( Mutex && )
noexcept

Move-assigns mutex state.

References Mutex().

◆ owner()

std::optional< ProcessId > contur::Mutex::owner ( ) const
nodiscardnoexcept

Current owner process ID, if locked.

References owner().

Referenced by owner().

◆ recursionDepth()

std::size_t contur::Mutex::recursionDepth ( ) const
nodiscardnoexcept

Reentrancy depth for owner.

References recursionDepth().

Referenced by recursionDepth().

◆ registerProcessPriority()

Result< void > contur::Mutex::registerProcessPriority ( ProcessId pid,
PriorityLevel basePriority )
nodiscard

Registers process base priority used by inheritance logic.

References basePriority(), and registerProcessPriority().

Referenced by registerProcessPriority().

◆ release()

Result< void > contur::Mutex::release ( ProcessId pid)
nodiscardoverridevirtual

Releases the mutex held by process pid.

Returns
Ok on success; PermissionDenied/InvalidState on misuse.

Implements contur::ISyncPrimitive.

References release().

Referenced by release().

◆ tryAcquire()

Result< void > contur::Mutex::tryAcquire ( ProcessId pid)
nodiscardoverridevirtual

Attempts immediate acquire without enqueueing waiters.

Implements contur::ISyncPrimitive.

References tryAcquire().

Referenced by tryAcquire().

◆ waitingCount()

std::size_t contur::Mutex::waitingCount ( ) const
nodiscardnoexcept

Number of waiting processes.

References waitingCount().

Referenced by waitingCount().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::Mutex::impl_
private

Definition at line 75 of file mutex.h.


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