aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/proc/task.rs11
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");
}