diff options
Diffstat (limited to 'kernel/scheduler.c')
| -rw-r--r-- | kernel/scheduler.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c index 72165f9..20c6f35 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -1,8 +1,12 @@ #include "scheduler.h" #include "kernel.h" +#include "gdt.h" #include "mem.h" +#include "fs/elf.h" #include "asm_x86.h" +#include "asm_task.h" +#include "asm_usermode.h" #include "kmalloc.h" #include "vmem.h" @@ -32,13 +36,14 @@ static volatile struct task_list_struct volatile uint32_t ecx; volatile uint32_t edx; -}volatile task_list[MAX_TASKS]; +}task_list[MAX_TASKS]; volatile int task_reset(uint32_t pid, uint32_t entry, uint32_t stack) { uint32_t *stk=task_list[pid].esp; stk[14]=entry; stk[17]=stack; + return 1; } volatile int add_task(uint32_t parent,uint32_t vmem) @@ -199,6 +204,7 @@ volatile uint32_t task_syscall(uint32_t eax,uint32_t ebx, uint32_t ecx, uint32_t task_list[current_task].edx=edx; task_list[2].wait=false; + return 1; } //TODO: free vmem too! @@ -211,6 +217,7 @@ volatile uint32_t task_exit(uint32_t pid) task_list[parent_pid].wait=false; klog("[%d] exit", pid); vmem_free_dir(task_list[pid].vmem); + return 1; } volatile uint32_t task_wait(uint32_t pid) @@ -218,6 +225,7 @@ volatile uint32_t task_wait(uint32_t pid) klog("[%d] wait", pid); task_list[pid].wait=true; task_list[pid].eax=SYSCALL_WAIT; + return 1; } volatile uint32_t task_fork(uint32_t pid) |
