refactor: add a async read/write variant to device ops, with allow async io to be...
[lunaix-os.git] / lunaix-os / kernel / process / sched.c
index 405602199291d2c9f27548ac2cd6b8394b5b1856..bec2faef33af8cc4591949602359bc89d7bd0335 100644 (file)
@@ -42,9 +42,8 @@ sched_init()
     proc_pile = cake_new_pile("proc", sizeof(struct proc_info), 1, 0);
     cake_set_constructor(proc_pile, cake_ctor_zeroing);
 
-    sched_ctx = (struct scheduler){ ._procs = vzalloc(PROC_TABLE_SIZE),
-                                    .ptable_len = 0,
-                                    .procs_index = 0 };
+    sched_ctx = (struct scheduler){
+        ._procs = vzalloc(PROC_TABLE_SIZE), .ptable_len = 0, .procs_index = 0};
 
     // TODO initialize dummy_proc
     sched_init_dummy();
@@ -96,6 +95,9 @@ can_schedule(struct proc_info* proc)
     if ((proc->state & PS_PAUSED)) {
         return !!(sh->sig_pending & ~1);
     }
+    if ((proc->state & PS_BLOCKED)) {
+        return sigset_test(sh->sig_pending, _SIGINT);
+    }
 
     if (sigset_test(sh->sig_pending, _SIGCONT)) {
         sigset_clear(sh->sig_pending, _SIGSTOP);