summaryrefslogtreecommitdiff
path: root/kernel/task.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/task.c')
-rw-r--r--kernel/task.c50
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
}