Switch ok with debug mode apps, implement sys_exit correctly later.
This commit is contained in:
parent
4e8059e222
commit
3f3e6b2b99
16 changed files with 244 additions and 147 deletions
|
@ -1,7 +1,7 @@
|
|||
const SYSCALL_WRITE: usize = 64;
|
||||
const SYSCALL_EXIT: usize = 93;
|
||||
const SYSCALL_YIELD: usize = 124;
|
||||
const SYSCALL_GET_TIME: usize = 169;
|
||||
//const SYSCALL_GET_TIME: usize = 169;
|
||||
|
||||
mod fs;
|
||||
mod process;
|
||||
|
@ -13,6 +13,7 @@ pub fn syscall(syscall_id: usize, args: [usize; 3]) -> isize {
|
|||
match syscall_id {
|
||||
SYSCALL_WRITE => sys_write(args[0], args[1] as *const u8, args[2]),
|
||||
SYSCALL_EXIT => sys_exit(args[0] as i32),
|
||||
SYSCALL_YIELD => sys_yield(),
|
||||
_ => panic!("Unsupported syscall_id: {}", syscall_id),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
use crate::batch::run_next_app;
|
||||
use crate::task::switch_to_next_task;
|
||||
|
||||
pub fn sys_exit(xstate: i32) -> ! {
|
||||
println!("[kernel] Application exited with code {}", xstate);
|
||||
run_next_app()
|
||||
//run_next_app()
|
||||
panic!("[kernel] first exit!");
|
||||
}
|
||||
|
||||
pub fn sys_yield() -> isize {
|
||||
switch_to_next_task();
|
||||
0
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue