Avoid panicking when inputting error app name; List all apps when initializing.

pull/3/head
Yifan Wu 4 years ago
parent 3642f9c56d
commit 3a2f89fc67

@ -51,3 +51,12 @@ fn app_names() -> Vec<&'static str> {
}
v
}
pub fn list_apps() {
let apps = app_names();
println!("/**** APPS ****");
for app in apps {
println!("{}", app);
}
println!("**************/")
}

@ -46,6 +46,7 @@ pub fn rust_main() -> ! {
trap::init();
trap::enable_timer_interrupt();
timer::set_next_trigger();
loader::list_apps();
task::run_tasks();
panic!("Unreachable in rust_main!");
}

@ -59,10 +59,13 @@ pub fn sys_fork() -> isize {
pub fn sys_exec(path: *const u8) -> isize {
let token = current_user_token();
let path = translated_str(token, path);
let data = get_app_data_by_name(path.as_str()).unwrap();
let task = current_task().unwrap();
task.exec(data);
0
if let Some(data) = get_app_data_by_name(path.as_str()) {
let task = current_task().unwrap();
task.exec(data);
0
} else {
-1
}
}
pub fn sys_waitpid(pid: isize, exit_code_ptr: *mut i32) -> isize {

@ -31,13 +31,13 @@ pub fn main() -> i32 {
if pid == 0 {
// child process
if exec(line.as_str()) == -1 {
println!("Command not found!");
println!("Error when executing!");
return 0;
}
unreachable!();
} else {
let mut xstate: i32 = 0;
let mut exit_pid: isize = 0;
let mut exit_pid: isize;
loop {
exit_pid = waitpid(pid as usize, &mut xstate);
if exit_pid == -1 {

Loading…
Cancel
Save