chore: fix almost *ALL* warnings.
[lunaix-os.git] / lunaix-os / kernel / process / sched.c
index ade13b31c6414f4e1e1588b26645f255475f2c6c..b21d086ebce3667c7397cbb39da75575bfb0ba27 100644 (file)
@@ -66,7 +66,7 @@ sched_init_dummy()
     *execp = (struct exec_param){
         .cs = KCODE_SEG,
         .eflags = cpu_reflags() | 0x0200,
-        .eip = (void*)my_dummy,
+        .eip = (ptr_t)my_dummy,
         .ss = KDATA_SEG,
     };
 
@@ -215,12 +215,17 @@ __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;
 
     block_current();
     schedule();
+
+    return 0;
 }
 
 __DEFINE_LXSYSCALL1(unsigned int, alarm, unsigned int, seconds)
@@ -368,7 +373,7 @@ commit_process(struct proc_info* process)
 
 // from <kernel/process.c>
 extern void
-__del_pagetable(pid_t pid, uintptr_t mount_point);
+__del_pagetable(pid_t pid, ptr_t mount_point);
 
 pid_t
 destroy_process(pid_t pid)
@@ -376,8 +381,9 @@ destroy_process(pid_t pid)
     int index = pid;
     if (index <= 0 || index > sched_ctx.ptable_len) {
         __current->k_status = EINVAL;
-        return;
+        return -1;
     }
+
     struct proc_info* proc = sched_ctx._procs[index];
     sched_ctx._procs[index] = 0;