aboutsummaryrefslogtreecommitdiff
path: root/kernel/task/sched.c
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-04-08 13:18:27 +0200
committerJakob Odersky <jodersky@gmail.com>2014-04-08 14:57:10 +0200
commit350437ef4b8ba0811d285f7454d2b54ffce6b029 (patch)
tree5084c73adbb4cc3aee9d000b3816d98a57203f36 /kernel/task/sched.c
parentc4ebb91caf33ecf5a47785584a4231eb1e4dfa2a (diff)
downloadmux-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.c55
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