From c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 8 Apr 2014 10:58:07 +0200 Subject: add test command interpreter --- kernel/io/include/io/io.h | 2 +- kernel/task/idle.c | 1 + kernel/task/sched.c | 2 ++ main.c | 16 ++++++++-------- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/kernel/io/include/io/io.h b/kernel/io/include/io/io.h index a715f1b..3c83cdc 100644 --- a/kernel/io/include/io/io.h +++ b/kernel/io/include/io/io.h @@ -9,7 +9,7 @@ struct file; struct file_operations; struct file { - struct file_operations* fops; + struct file_operations* const fops; void* private_data; }; diff --git a/kernel/task/idle.c b/kernel/task/idle.c index 6bd8494..7d6576d 100644 --- a/kernel/task/idle.c +++ b/kernel/task/idle.c @@ -5,6 +5,7 @@ #include "task/idle.h" #include "task/task.h" + void idle_entry(char args) { while(1) { set_sleep_mode(SLEEP_MODE_IDLE); diff --git a/kernel/task/sched.c b/kernel/task/sched.c index da7b59d..5989136 100644 --- a/kernel/task/sched.c +++ b/kernel/task/sched.c @@ -47,7 +47,9 @@ void schedule() { if(!list_empty(&ready)) { current = list_entry(ready.next, struct tcb_t, queue); list_move_tail(ready.next, &ready); + debug_led(0,1); } else { current = idle; + debug_led(0,0); } } \ No newline at end of file diff --git a/main.c b/main.c index d3e142c..703bbb5 100644 --- a/main.c +++ b/main.c @@ -6,6 +6,7 @@ #include "bug/debug.h" #include "task/task.h" #include "task/sched.h" +#include "task/idle.h" #include "task/lock.h" #include "task/idle.h" #include "time/clock.h" @@ -20,17 +21,16 @@ void worker() { char buffer[64]; while(1) { - debug_led(1, 0); - debug_led(2, 0); - int length = read(&usart0, buffer, 64); - if (length > 0) { - debug_led(1, 1); - write(&usart0, buffer, length); + int led; + int value; + if (sscanf(buffer, "leds/%d:%d", &led, &value) == 2) { + debug_led(led, value); } else { - debug_led(2, 1); - WAIT_CYCLES(30000); + debug_led(0,1); + WAIT_CYCLES(300000); + debug_led(0,0); } } } -- cgit v1.2.3