|
| | Guard (Guard &&other) noexcept |
| |
| void | prepareToWait () |
| |
| MUST_USE_RESULT WakeReason | wait (const Channel &channel=Channel(), size_t debugState=0, uintptr_t debugAddress=0, StackDiscardCleanup onStackDiscard=nullptr, void *stackDiscardContext=nullptr) |
| |
| MUST_USE_RESULT WakeReason | waitForCompletion (const Channel &channel=Channel(), size_t debugState=0, uintptr_t debugAddress=0) |
| |
| MUST_USE_RESULT WakeReason | waitAndUnlock (Mutex &mutex, const Channel &channel=Channel(), size_t debugState=0, uintptr_t debugAddress=0, StackDiscardCleanup onStackDiscard=nullptr, void *stackDiscardContext=nullptr) |
| |
| MUST_USE_RESULT WakeReason | waitAndUnlockForCompletion (Mutex &mutex, const Channel &channel=Channel(), size_t debugState=0, uintptr_t debugAddress=0) |
| |
| bool | wakeOne (WakeReason reason=WakeReason::Signalled, const Channel &channel=Channel()) |
| |
| size_t | wakeAll (WakeReason reason=WakeReason::Signalled, const Channel &channel=Channel()) |
| |
| size_t | wakeAndRequeue (const Channel &source, size_t wakeCount, const Channel &destination, size_t requeueCount) |
| |
Definition at line 60 of file WaitQueue.h.
◆ Guard() [1/2]
| WaitQueue::Guard::Guard |
( |
Guard && |
other | ) |
|
|
noexcept |
◆ ~Guard()
| WaitQueue::Guard::~Guard |
( |
| ) |
|
◆ Guard() [2/2]
◆ prepareToWait()
| void WaitQueue::Guard::prepareToWait |
( |
| ) |
|
Enables wakeAllIfWaiting for this wait. Call before the final sequentially consistent predicate check, keeping this guard held until either abandoning the wait or enrolling with wait().
Definition at line 83 of file WaitQueue.cc.
◆ queueSchedulerNotification()
| void WaitQueue::Guard::queueSchedulerNotification |
( |
Waiter * |
waiter | ) |
|
|
private |
◆ release()
| void WaitQueue::Guard::release |
( |
| ) |
|
|
private |
◆ wait()
| WaitQueue::WakeReason WaitQueue::Guard::wait |
( |
const Channel & |
channel = Channel(), |
|
|
size_t |
debugState = 0, |
|
|
uintptr_t |
debugAddress = 0, |
|
|
StackDiscardCleanup |
onStackDiscard = nullptr, |
|
|
void * |
stackDiscardContext = nullptr |
|
) |
| |
◆ waitAndUnlock()
| WaitQueue::WakeReason WaitQueue::Guard::waitAndUnlock |
( |
Mutex & |
mutex, |
|
|
const Channel & |
channel = Channel(), |
|
|
size_t |
debugState = 0, |
|
|
uintptr_t |
debugAddress = 0, |
|
|
StackDiscardCleanup |
onStackDiscard = nullptr, |
|
|
void * |
stackDiscardContext = nullptr |
|
) |
| |
Releases a caller mutex before enrolling and blocking. The mutex is reacquired before every returning outcome, including a pending process or thread exit.
Definition at line 137 of file WaitQueue.cc.
◆ waitAndUnlockForCompletion()
| WaitQueue::WakeReason WaitQueue::Guard::waitAndUnlockForCompletion |
( |
Mutex & |
mutex, |
|
|
const Channel & |
channel = Channel(), |
|
|
size_t |
debugState = 0, |
|
|
uintptr_t |
debugAddress = 0 |
|
) |
| |
Releases a caller mutex while waiting for an ownership/lifetime barrier. Terminal requests and signal events may wake the wait, but neither may abandon reacquisition of the caller mutex. A signal interruption remains visible to the caller after reacquisition.
Definition at line 150 of file WaitQueue.cc.
Referenced by ConditionVariable::waitForCompletion().
◆ waitForCompletion()
| WaitQueue::WakeReason WaitQueue::Guard::waitForCompletion |
( |
const Channel & |
channel = Channel(), |
|
|
size_t |
debugState = 0, |
|
|
uintptr_t |
debugAddress = 0 |
|
) |
| |
◆ waitWithoutEventDispatch()
| WaitQueue::WakeReason WaitQueue::Guard::waitWithoutEventDispatch |
( |
const Channel & |
channel, |
|
|
size_t |
debugState, |
|
|
uintptr_t |
debugAddress |
|
) |
| |
|
private |
Leaves event selection to the caller after its wait predicate recheck.
Definition at line 126 of file WaitQueue.cc.
◆ wakeAll()
| size_t WaitQueue::Guard::wakeAll |
( |
WakeReason |
reason = WakeReason::Signalled, |
|
|
const Channel & |
channel = Channel() |
|
) |
| |
◆ wakeAndRequeue()
| size_t WaitQueue::Guard::wakeAndRequeue |
( |
const Channel & |
source, |
|
|
size_t |
wakeCount, |
|
|
const Channel & |
destination, |
|
|
size_t |
requeueCount |
|
) |
| |
Moves waiters under the queue lock, preserving coherent debug snapshots.
Definition at line 182 of file WaitQueue.cc.
◆ wakeOne()
| bool WaitQueue::Guard::wakeOne |
( |
WakeReason |
reason = WakeReason::Signalled, |
|
|
const Channel & |
channel = Channel() |
|
) |
| |
◆ PerProcessorScheduler
◆ WaitQueue
◆ m_OwnsLock
| bool WaitQueue::Guard::m_OwnsLock |
|
private |
◆ m_pFirstReady
| Waiter* WaitQueue::Guard::m_pFirstReady |
|
private |
◆ m_pLastReady
| Waiter* WaitQueue::Guard::m_pLastReady |
|
private |
◆ m_Queue
The documentation for this class was generated from the following files: