![]() |
Contur 2
Educational OS kernel simulator
|
Reentrant mutex with ownership tracking. More...
#include <mutex.h>
Public Member Functions | |
| Mutex () | |
| Constructs an unlocked mutex. | |
| ~Mutex () override | |
| Destroys mutex. | |
| Mutex (const Mutex &)=delete | |
| Copy construction is disabled. | |
| Mutex & | operator= (const Mutex &)=delete |
| Copy assignment is disabled. | |
| Mutex (Mutex &&) noexcept | |
| Move-constructs mutex state. | |
| Mutex & | operator= (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< ProcessId > | owner () 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_ |
| contur::Mutex::Mutex | ( | ) |
Constructs an unlocked mutex.
Referenced by Mutex(), Mutex(), operator=(), and operator=().
|
override |
Destroys mutex.
|
delete |
Copy construction is disabled.
References Mutex().
|
noexcept |
Move-constructs mutex state.
References Mutex().
Acquires the mutex for process pid.
Implements contur::ISyncPrimitive.
References acquire().
Referenced by acquire().
|
nodiscardnoexcept |
Registered base priority.
References basePriority().
Referenced by basePriority(), and registerProcessPriority().
|
nodiscardnoexcept |
Effective priority after inheritance boosts.
References effectivePriority().
Referenced by effectivePriority().
|
nodiscardnoexcept |
|
nodiscardoverridevirtualnoexcept |
Layer classification for synchronization model split.
Implements contur::ISyncPrimitive.
References layer().
Referenced by layer().
|
nodiscardoverridevirtualnoexcept |
Primitive name for diagnostics.
Implements contur::ISyncPrimitive.
References name().
Referenced by name().
Copy assignment is disabled.
References Mutex().
Move-assigns mutex state.
References Mutex().
|
nodiscardnoexcept |
|
nodiscardnoexcept |
|
nodiscard |
Registers process base priority used by inheritance logic.
References basePriority(), and registerProcessPriority().
Referenced by registerProcessPriority().
Releases the mutex held by process pid.
Implements contur::ISyncPrimitive.
References release().
Referenced by release().
Attempts immediate acquire without enqueueing waiters.
Implements contur::ISyncPrimitive.
References tryAcquire().
Referenced by tryAcquire().
|
nodiscardnoexcept |