    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    //! Process management syscalls
    use crate::task::{exit_current_and_run_next, suspend_current_and_run_next};

    /// task exits and submit an exit code
    pub fn sys_exit(exit_code: i32) -> ! {
        println!("[kernel] Application exited with code {}", exit_code);
        exit_current_and_run_next();
        panic!("Unreachable in sys_exit!");
    }

    /// current task gives up resources for other tasks
    pub fn sys_yield() -> isize {
        suspend_current_and_run_next();
        0
    }