From 7393db6692c861bc66164c0dd9b83f23a554775b Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 26 Nov 2014 23:17:55 +0100 Subject: changes, improvements and cleanup --- kernel/task.c | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) (limited to 'kernel/task.c') 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 } -- cgit v1.2.3