aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-04-08 10:58:07 +0200
committerJakob Odersky <jodersky@gmail.com>2014-04-08 10:58:07 +0200
commitc4ebb91caf33ecf5a47785584a4231eb1e4dfa2a (patch)
tree2e08bcc7787180b23c08439b24b60e94f0b0d359
parent78f49388f86b6a6b9870694d84e175187affaae8 (diff)
downloadmux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.tar.gz
mux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.tar.bz2
mux-c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a.zip
add test command interpreter
-rw-r--r--kernel/io/include/io/io.h2
-rw-r--r--kernel/task/idle.c1
-rw-r--r--kernel/task/sched.c2
-rw-r--r--main.c16
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);
}
}
}