diff options
| author | Michal Idziorek <m.i@gmx.at> | 2015-05-16 03:48:35 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2015-05-16 03:48:35 +0200 |
| commit | f92a23a2fcee6cbb97af9c7681e6872374d3c789 (patch) | |
| tree | 41669345c8a5a60548e8e07cf805df9ef01c1c26 /kernel/task.c | |
| parent | ba10657752ba869b1c46c861cbda689b535e8214 (diff) | |
finally working ring 3
Diffstat (limited to 'kernel/task.c')
| -rw-r--r-- | kernel/task.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/task.c b/kernel/task.c index 1474a64..000dc74 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -82,6 +82,7 @@ volatile uint32_t my_scheduler(uint32_t oldesp) // this gets called by our clock interrupt regularly! volatile uint32_t task_switch_next(uint32_t oldesp) { + asm volatile("sti"); timer_tick(); @@ -146,12 +147,12 @@ volatile uint32_t task_fork(uint32_t oldesp) return pid; } -char *argv_init[]={"/bin/init",NULL}; -char *env_init[]={NULL}; // init task (root of all other tasks / processes) // volatile void task_init(pdirectory *dir) { + + // this is our main task on slot 0 task_list[0].parent=0; task_list[0].active=true; @@ -159,10 +160,12 @@ volatile void task_init(pdirectory *dir) task_list[0].vmem=dir; task_list[0].esp = 0; // will be set by next task_switch_next() call. current_task=0; + + + switch_to_user_mode(); - syscall_execve("/bin/init",argv_init,env_init); //syscall_execve("/bin/foolshell",argv_init,env_init); -// syscall_execve("/bin/tput",argv,env); + //syscall_execve("/bin/tput",argv,env); } |
