Recover idle process. Make shell wait for the user it spawned.

toolchain_update
WangRunji 7 years ago
parent 04b62ec79f
commit 52d3443e05

@ -29,9 +29,10 @@ pub fn shell() {
continue; continue;
} }
if let Ok(file) = root.borrow().lookup(name.as_str()) { if let Ok(file) = root.borrow().lookup(name.as_str()) {
let len = file.borrow().read_at(0, &mut *buf).unwrap();
use process::*; use process::*;
processor().add(Context::new_user(&buf[..len])); let len = file.borrow().read_at(0, &mut *buf).unwrap();
let pid = processor().add(Context::new_user(&buf[..len]));
processor().current_wait_for(pid);
} else { } else {
println!("Program not exist"); println!("Program not exist");
} }

@ -10,11 +10,18 @@ type Processor = Processor_<Context, StrideScheduler>;
pub fn init() { pub fn init() {
PROCESSOR.call_once(|| PROCESSOR.call_once(||
SpinNoIrqLock::new(Processor::new( SpinNoIrqLock::new({
unsafe { Context::new_init() }, let mut processor = Processor::new(
// NOTE: max_time_slice <= 5 to ensure 'priority' test pass unsafe { Context::new_init() },
StrideScheduler::new(5), // NOTE: max_time_slice <= 5 to ensure 'priority' test pass
)) StrideScheduler::new(5),
);
extern fn idle(arg: usize) -> ! {
loop {}
}
processor.add(Context::new_kernel(idle, 0));
processor
})
); );
} }

Loading…
Cancel
Save