diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel.c | 6 | ||||
| -rw-r--r-- | kernel/task.c | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c index eee66d7..9e8108f 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -158,9 +158,6 @@ void kernel_main(uint32_t initial_stack) int_install_ir(17, 0b10001110, 0x08,&int_irq17); int_install_ir(18, 0b10001110, 0x08,&int_irq18); - // multitasking - task_init(); - // now we can enable interrupts back again int_enable(); @@ -175,6 +172,9 @@ void kernel_main(uint32_t initial_stack) //init shell shell_init(); + + // multitasking + task_init(); /* log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"test mem"); diff --git a/kernel/task.c b/kernel/task.c index fb71640..8884079 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -5,6 +5,8 @@ #include "../lib/logger/log.h" // logger facilities #define FOOLOS_MODULE_NAME "task" +int started; + void task_test1() { uint8_t c1; @@ -88,6 +90,8 @@ void task_create(int pid,void(*thread)()) uint32_t task_switch_next(uint32_t oldesp) { + + if(started!=0xabcde) return oldesp; if(CurrentTask != -1){ //Were we even running a task? @@ -119,6 +123,7 @@ void stack_trace(uint32_t *stack,int size) void task_init() { + started=0xabcde; log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init multitasking."); task_create(0,task_test1); task_create(1,task_test2); |
