diff options
Diffstat (limited to 'kernel/features')
-rw-r--r-- | kernel/features/proc.c | 7 | ||||
-rw-r--r-- | kernel/features/syscall.c | 2 |
2 files changed, 4 insertions, 5 deletions
diff --git a/kernel/features/proc.c b/kernel/features/proc.c index 5b4da1f..021a3d6 100644 --- a/kernel/features/proc.c +++ b/kernel/features/proc.c @@ -114,9 +114,8 @@ struct proc *proc_from_pid(u32 pid) { struct node *iterator = proc_list->head; do { - if (((struct proc *)iterator->data)->pid == pid) { + if (((struct proc *)iterator->data)->pid == pid) return iterator->data; - } } while ((iterator = iterator->next) != NULL); return NULL; } @@ -139,10 +138,10 @@ void proc_exit(struct proc *proc, int status) hlt(); } -// TODO: More instant yield -void proc_yield() +void proc_yield(struct regs *r) { quantum = 0; + scheduler(r); } struct proc *proc_make() diff --git a/kernel/features/syscall.c b/kernel/features/syscall.c index fb6adf1..fbbb68b 100644 --- a/kernel/features/syscall.c +++ b/kernel/features/syscall.c @@ -71,7 +71,7 @@ void syscall_handler(struct regs *r) } case SYS_YIELD: { /* printf("yield\n"); */ - proc_yield(); + proc_yield(r); break; } case SYS_TIME: { |