fix: sleeper issue #13
[lunaix-os.git] / lunaix-os / kernel / process / sched.c
index f0c0a988c97d59c9f30bdff81266ac7cac4aae44..5e882b7df8f4c32fa3ff7757f84be78d215efae4 100644 (file)
@@ -213,7 +213,10 @@ __DEFINE_LXSYSCALL1(unsigned int, sleep, unsigned int, seconds)
 
     struct proc_info* root_proc = sched_ctx._procs[0];
     __current->sleep.wakeup_time = clock_systime() + seconds * 1000;
-    llist_append(&root_proc->sleep.sleepers, &__current->sleep.sleepers);
+
+    if (llist_empty(&__current->sleep.sleepers)) {
+        llist_append(&root_proc->sleep.sleepers, &__current->sleep.sleepers);
+    }
 
     __current->intr_ctx.registers.eax = seconds;