Source concurrency/sync.rs futex wait/wake with an actual optional clock handler and typed FnOnce captures. None never reads or manufactures a global clock. Callback tokens use the owner's shared thread callback identity supply.
@[reducible, inline]
Instances For
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[instance_reducible]
Equations
- futex : Ref
- destination : D
Instances For
- objects : Array FutexState
Instances For
- handler : M S SyncClockHandler
- global : M S (Option GlobalState)
- putGlobal : GlobalState → M S Unit
- threads : M S ThreadManager
- putThreads : ThreadManager → M S Unit
- futex : Ref → M S FutexState
- putFutex : Ref → FutexState → M S Unit
- error : SyncError → Interpreter.StepError
Instances For
def
Miri.Concurrency.FutexRuntime.invoke
{S D : Type}
(h : Hooks S D)
(token : Nat)
(kind : UnblockKind)
:
Box<Self> is consumed before the first callback effect. Ready acquires; timeout removes the active waiter; only then does the syscall result write.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Concurrency.FutexRuntime.wait
{S D : Type}
(h : Hooks S D)
(ref : Ref)
(bitset : UInt32)
(deadline : Option ThreadDeadline)
(destination : D)
:
Enqueue precedes callback creation and source block-thread constraints. A failed block drops the callback but retains the already appended waiter.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Miri.Concurrency.FutexRuntime.wake
{S D : Type}
(h : Hooks S D)
(ref : Ref)
(bitset : UInt32)
(count : Nat)
:
Release precedes extraction, including count=0. All matching removals precede any callback; unblocks execute FIFO with actual stack switching.
Equations
- One or more equations did not get rendered due to their size.