trait EvalContextPrivExt<'tcx>: MiriInterpCxExt<'tcx> {
// Provided methods
fn run_on_stack_empty(&mut self) -> InterpResult<'tcx, Poll<()>> { ... }
fn schedule(&mut self) -> InterpResult<'tcx, SchedulingAction> { ... }
fn unblock_expired_deadlines(
&mut self,
) -> InterpResult<'tcx, Option<Duration>> { ... }
}Provided Methods§
fn run_on_stack_empty(&mut self) -> InterpResult<'tcx, Poll<()>>
Sourcefn schedule(&mut self) -> InterpResult<'tcx, SchedulingAction>
fn schedule(&mut self) -> InterpResult<'tcx, SchedulingAction>
Decide which action to take next and on which thread.
The currently implemented scheduling policy is the one that is commonly used in stateless model checkers such as Loom: run the active thread as long as we can and switch only when we have to (the active thread was blocked, terminated, or has explicitly asked to be preempted).
If GenMC mode is active, the scheduling is instead handled by GenMC.
Sourcefn unblock_expired_deadlines(&mut self) -> InterpResult<'tcx, Option<Duration>>
fn unblock_expired_deadlines(&mut self) -> InterpResult<'tcx, Option<Duration>>
Find all threads with expired timeouts, unblock them and execute their timeout callbacks.
This method returns the minimum duration until the next thread deadline.
If all ready threads have no deadline set, None is returned.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".