Add MutexBlocking.

This commit is contained in:
Yifan Wu 2021-10-07 14:33:44 -07:00
parent 8974a29245
commit db6a93e60d
11 changed files with 119 additions and 13 deletions

View file

@ -52,6 +52,15 @@ pub fn suspend_current_and_run_next() {
schedule(task_cx_ptr);
}
pub fn block_current_and_run_next() {
let task = take_current_task().unwrap();
let mut task_inner = task.inner_exclusive_access();
let task_cx_ptr = &mut task_inner.task_cx as *mut TaskContext;
task_inner.task_status = TaskStatus::Blocking;
drop(task_inner);
schedule(task_cx_ptr);
}
pub fn exit_current_and_run_next(exit_code: i32) {
let task = take_current_task().unwrap();
let mut task_inner = task.inner_exclusive_access();