diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-04-08 13:18:27 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-04-08 14:57:10 +0200 |
commit | 350437ef4b8ba0811d285f7454d2b54ffce6b029 (patch) | |
tree | 5084c73adbb4cc3aee9d000b3816d98a57203f36 /kernel/task/sched.c | |
parent | c4ebb91caf33ecf5a47785584a4231eb1e4dfa2a (diff) | |
download | mux-350437ef4b8ba0811d285f7454d2b54ffce6b029.tar.gz mux-350437ef4b8ba0811d285f7454d2b54ffce6b029.tar.bz2 mux-350437ef4b8ba0811d285f7454d2b54ffce6b029.zip |
change build structure
Diffstat (limited to 'kernel/task/sched.c')
-rw-r--r-- | kernel/task/sched.c | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/kernel/task/sched.c b/kernel/task/sched.c deleted file mode 100644 index 5989136..0000000 --- a/kernel/task/sched.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "bug/panic.h" -#include "task/task.h" -#include "task/sched.h" -#include "mcu/task/context.h" - - -struct tcb_t* volatile current = 0; - -static struct tcb_t* volatile idle = 0; - -struct list_head ready = LIST_HEAD_INIT(ready); - -void spawn(struct tcb_t* const tcb) { - tcb->sp = stack_init(tcb->mem_low, tcb->mem_high, tcb->entry, tcb->id); - INIT_LIST_HEAD(&tcb->queue); - list_add_tail(&tcb->queue, &ready); -} - -void spawn_idle(struct tcb_t* const tcb) { - spawn(tcb); - list_del(&tcb->queue); - idle = tcb; -} - -void yield(void) { - context_save(); - schedule(); - context_restore(); - ret(); -} - -void sched_init() { - schedule(); - context_restore(); - sei(); - ret(); -} - -#include <avr/io.h> -void toggle_led() { - DDRB |= (1 << 7); - PORTB ^= (1 << 7); -} - -void schedule() { - toggle_led(); - 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 |