Add support for std:🧵:yield_now

This commit is contained in:
David Cook 2020-04-18 19:31:02 -05:00
parent 11cd87e457
commit 7b69a6271e
3 changed files with 13 additions and 0 deletions

View File

@ -312,6 +312,9 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
// We do not support forking, so there is nothing to do here.
this.write_null(dest)?;
}
"sched_yield" => {
this.write_null(dest)?;
}
// Incomplete shims that we "stub out" just to get pre-main initialization code to work.
// These shims are enabled only when the caller is in the standard library.

View File

@ -201,6 +201,11 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
// FIXME: we should set last_error, but to what?
this.write_null(dest)?;
}
"SwitchToThread" => {
// Note that once Miri supports concurrency, this will need to return a nonzero
// value if this call does result in switching to another thread.
this.write_null(dest)?;
}
// Better error for attempts to create a thread
"CreateThread" => {

View File

@ -10,6 +10,7 @@ fn main() {
test_rwlock_stdlib();
}
test_spin_loop_hint();
test_thread_yield_now();
}
fn test_mutex_stdlib() {
@ -56,3 +57,7 @@ impl<T> TryLockErrorExt<T> for TryLockError<T> {
fn test_spin_loop_hint() {
atomic::spin_loop_hint();
}
fn test_thread_yield_now() {
std::thread::yield_now();
}