diff options
Diffstat (limited to 'kernel/task.c')
| -rw-r--r-- | kernel/task.c | 50 |
1 files changed, 29 insertions, 21 deletions
diff --git a/kernel/task.c b/kernel/task.c index df48afb..7e39a30 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -3,9 +3,11 @@ // #include "kernel.h" #include "lib/logger/log.h" // logger facilities -#include "lib/int/stdint.h" +#include "lib/buffer/ringbuffer.h" #include "mem.h" #include "timer.h" +#include "console.h" +#include "x86.h" #include "syscalls.h" #include "fs/fs.h" @@ -13,31 +15,29 @@ #define FOOLOS_MODULE_NAME "task" int started; - -static uint32_t c1,c2,c3; +static volatile int c1,c2,c3; void task_test1() { - //ext2_check(EXT2_RAM_ADDRESS); - //syscall_execve(15,0,0); -// syscall_execve(18,0,0); - + // simple built-in shell + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"spawning build-in shell"); + while(1) { + + char c; + if(ringbuffer_get(&c)) + { + console_put_char(c); + } + } - int cc2,cc3; - - asm("cli"); - - cc2=c2; - cc3=c3; - - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"tasks progress: %d %d", cc2, cc3); - asm("sti"); - - c1++; + /* + c1++; + log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"task 1 progress: %d", c1); + sleep(2); + */ - } } @@ -47,6 +47,8 @@ void task_test2() while(1) { c2++; + //log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"task 2 progress: %d", c2); +// sleep(2); } @@ -57,6 +59,8 @@ void task_test3() while(1) { c3++; +// log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"task 3 progress: %d", c3); +// sleep(2); } } @@ -112,22 +116,26 @@ void task_create(int pid,void(*thread)()) uint32_t task_switch_next(uint32_t oldesp) { - timer_tick(); + //console_put_char('.'); + timer_tick(); if(started!=0xabcde) return oldesp; if(CurrentTask!=-1)Threads[CurrentTask].esp0=oldesp; CurrentTask++; if(CurrentTask>2)CurrentTask=0; + /* log( FOOLOS_MODULE_NAME, - FOOLOS_LOG_FINE, + FOOLOS_LOG_INFO, "oldesp: 0x%08X saved / next task: %d (esp: 0x%08X) ", oldesp, CurrentTask, Threads[CurrentTask].esp0); // return oldesp; +// */ + return Threads[CurrentTask].esp0; //Return new stack pointer to ASM } |
