From f92a23a2fcee6cbb97af9c7681e6872374d3c789 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Sat, 16 May 2015 03:48:35 +0200 Subject: finally working ring 3 --- kernel/task.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'kernel/task.c') 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); } -- cgit v1.2.3