diff --git a/os/src/syscall/process.rs b/os/src/syscall/process.rs index 3a2370f6..f8701599 100644 --- a/os/src/syscall/process.rs +++ b/os/src/syscall/process.rs @@ -1,18 +1,15 @@ use crate::task::{ - mark_current_suspended, - mark_current_exited, - run_next_task + suspend_current_and_run_next, + exit_current_and_run_next, }; pub fn sys_exit(exit_code: i32) -> ! { println!("[kernel] Application exited with code {}", exit_code); - mark_current_exited(); - run_next_task(); + exit_current_and_run_next(); panic!("Unreachable in sys_exit!"); } pub fn sys_yield() -> isize { - mark_current_suspended(); - run_next_task(); + suspend_current_and_run_next(); 0 } \ No newline at end of file diff --git a/os/src/task/mod.rs b/os/src/task/mod.rs index a9fbc5a9..8d739ca9 100644 --- a/os/src/task/mod.rs +++ b/os/src/task/mod.rs @@ -103,14 +103,24 @@ pub fn run_first_task() { TASK_MANAGER.run_first_task(); } -pub fn run_next_task() { +fn run_next_task() { TASK_MANAGER.run_next_task(); } -pub fn mark_current_suspended() { +fn mark_current_suspended() { TASK_MANAGER.mark_current_suspended(); } -pub fn mark_current_exited() { +fn mark_current_exited() { TASK_MANAGER.mark_current_exited(); +} + +pub fn suspend_current_and_run_next() { + mark_current_suspended(); + run_next_task(); +} + +pub fn exit_current_and_run_next() { + mark_current_exited(); + run_next_task(); } \ No newline at end of file