diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-24 20:29:34 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-24 20:29:34 +0100 |
commit | cae1a47905b0a5145a6aebb7875b3a46b5bdd407 (patch) | |
tree | 6dcfde64b428c10632f63e121e7a2df4ce3712fc /kernel/sched | |
parent | 6cdf34b0e87bc915de39a6d5817980a825a720da (diff) | |
download | mux-cae1a47905b0a5145a6aebb7875b3a46b5bdd407.tar.gz mux-cae1a47905b0a5145a6aebb7875b3a46b5bdd407.tar.bz2 mux-cae1a47905b0a5145a6aebb7875b3a46b5bdd407.zip |
move debugging and panic implementation to tshield
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/idle.c | 1 | ||||
-rw-r--r-- | kernel/sched/include/sched/sched.h | 12 | ||||
-rw-r--r-- | kernel/sched/mcu/atmega2560/context.c | 1 | ||||
-rw-r--r-- | kernel/sched/sched.c | 4 |
4 files changed, 8 insertions, 10 deletions
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 18ccdd5..d55d694 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -6,7 +6,6 @@ void idle_entry(char args) { while(1) { - tshield_led(TSHIELD_LED_IDLE,1); set_sleep_mode(SLEEP_MODE_IDLE); cli(); sleep_enable(); diff --git a/kernel/sched/include/sched/sched.h b/kernel/sched/include/sched/sched.h index d63b78c..a7f45ee 100644 --- a/kernel/sched/include/sched/sched.h +++ b/kernel/sched/include/sched/sched.h @@ -36,7 +36,7 @@ struct tcb_t { * Note: for a task to be scheduled, it must first be spawned (see spawn()). */ #define DECLARE_TASK(name, stack_size, entry_function) \ - static char volatile declared_stack_##name[stack_size]; \ + static char declared_stack_##name[stack_size]; \ static struct tcb_t name = { \ .sp = 0, \ .mem_low = declared_stack_##name, \ @@ -86,6 +86,11 @@ static inline void wake_all(struct list_head* queue) { */ void sched_init(); +/** + * Enters the scheduler, setting current to the next runnable task. + */ +void schedule(); + /** * Ticks the scheduler. */ @@ -93,11 +98,6 @@ inline void sched_tick() { schedule(); //in a round-robin scheduler, scheduling is called after every tick } -/** - * Enters the scheduler, setting current to the next runnable task. - */ -void schedule(); - /** * Initializes a given task and adds it to the ready queue. */ diff --git a/kernel/sched/mcu/atmega2560/context.c b/kernel/sched/mcu/atmega2560/context.c index 7a88b33..ef7e172 100644 --- a/kernel/sched/mcu/atmega2560/context.c +++ b/kernel/sched/mcu/atmega2560/context.c @@ -4,7 +4,6 @@ char* init_stack(const char* const mem_low, const char* const mem_high, void (*e char* sp = (char*) mem_high; unsigned long address = (unsigned long) entry; - *sp = (char) 0x1; sp--; *sp = (char) 0x2; diff --git a/kernel/sched/sched.c b/kernel/sched/sched.c index 8406b8d..bc3b30d 100644 --- a/kernel/sched/sched.c +++ b/kernel/sched/sched.c @@ -37,11 +37,11 @@ void spawn(struct tcb_t* const tcb, char args) { list_add_tail(&tcb->q, &ready); } -void yield(void) { +void yield() { SAVE_CONTEXT(); schedule(); RESTORE_CONTEXT(); - asm volatile ( "ret" ); + RETURN(); } void freeze() { |