diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-04-08 10:58:07 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-04-08 10:58:07 +0200 |
commit | c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a (patch) | |
tree | 2e08bcc7787180b23c08439b24b60e94f0b0d359 | |
parent | 78f49388f86b6a6b9870694d84e175187affaae8 (diff) | |
download | mux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.tar.gz mux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.tar.bz2 mux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.zip |
add test command interpreter
-rw-r--r-- | kernel/io/include/io/io.h | 2 | ||||
-rw-r--r-- | kernel/task/idle.c | 1 | ||||
-rw-r--r-- | kernel/task/sched.c | 2 | ||||
-rw-r--r-- | 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 @@ -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); } } } |