X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/0cf90cca0c924622f3fee8d2a3fafa8238363dc6..45e1f8b055043e54be35462852ab6649d634da7c:/lunaix-os/kernel/process/sched.c?ds=sidebyside diff --git a/lunaix-os/kernel/process/sched.c b/lunaix-os/kernel/process/sched.c index ade13b3..b21d086 100644 --- a/lunaix-os/kernel/process/sched.c +++ b/lunaix-os/kernel/process/sched.c @@ -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 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;