diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-11-27 02:06:57 +0100 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-11-27 02:06:57 +0100 |
| commit | 7526cbb7ea06a1862c732d367a759917695e1f08 (patch) | |
| tree | 677071be82b4102152af9c112a1a7235855af191 | |
| parent | e7b9569041521da7e0b67c30af7179c0af1e3738 (diff) | |
fixed iditoc mistake in multitask testing
| -rw-r--r-- | kernel/syscalls.c | 4 | ||||
| -rw-r--r-- | kernel/task.c | 30 |
2 files changed, 25 insertions, 9 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 585950d..0f06479 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -179,6 +179,10 @@ int syscall_readdir(const char *name,fs_dirent *dirs,int max) return fs_readdir(name,dirs,max); } +int syscall_wait() +{ +} + int syscall_fork() { } diff --git a/kernel/task.c b/kernel/task.c index 620977e..2b964ee 100644 --- a/kernel/task.c +++ b/kernel/task.c @@ -72,41 +72,53 @@ uint32_t task_switch_next(uint32_t oldesp) if(current_task==-2)return oldesp; if(current_task!=-1)task_list[current_task].esp=oldesp; - + for(int i=0;i<MAX_TASKS;i++) { int pid=(current_task+1+i)%MAX_TASKS; // schedule round robin style if(task_list[pid].active) { - log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"switch from %d to pid: %d (0x%08X)", current_task,pid,task_list[pid].esp); + // log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"switch from %d to pid: %d (0x%08X)", current_task,pid,task_list[pid].esp); current_task=pid; return task_list[pid].esp; } } - // if no task found retunr the old esp return oldesp; + } + +// task testing // + volatile int c1,c2; volatile void test1() { - c1++; - // syscall_write(1,">",1); + while(1) + { + c1++; + syscall_write(1,">",1); + sleep(1); + } } volatile void test2() { - c2++; - // syscall_write(1,"<",1); + while(1) + { + c2++; + syscall_write(1,"<",1); + sleep(1); + } + } void task_init() { - task_create(1,test1); - task_create(2,test2); + task_create(0,test1); + task_create(1,test2); current_task=-1; } |
