fix: sleeper issue #13
authorMinep <zelong56@gmail.com>
Tue, 17 Jan 2023 10:21:03 +0000 (10:21 +0000)
committerMinep <zelong56@gmail.com>
Tue, 17 Jan 2023 10:21:03 +0000 (10:21 +0000)
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;