diff options
| -rw-r--r-- | src/proc/task.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/proc/task.rs b/src/proc/task.rs index 2a6626d..720c93c 100644 --- a/src/proc/task.rs +++ b/src/proc/task.rs @@ -59,10 +59,13 @@ pub enum TaskState { pub extern "C" fn _task_entry() -> ! { let t = Task::current().unwrap(); println!("I'm Mr.Meeseeks {}, look at me~", t.pid); - Scheduler::do_schedule(); - println!("I'm Mr.Meeseeks {}, look at me~", t.pid); - Scheduler::do_schedule(); - unsafe { asm!("cli; hlt") }; + loop { + KBCTL_GLOBAL.lock().fetch_key(); + if let Some(k) = KBCTL_GLOBAL.lock().consume_key() { + println! {"thread {} got key: {}",t.pid ,k.asc} + } + Scheduler::do_schedule(); + } panic!("should not reach"); } |
