aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-01-03 22:03:09 +0000
committerDimitri Sokolyuk <demon@dim13.org>2016-01-03 22:03:09 +0000
commita0fe59c512e7db3faeddbd633c7c830af707bce5 (patch)
tree3f38a10137a86ca36bf7040e2c527761dde87adb
parenta14a45ec606d3f678da1713412e650a3ad026850 (diff)
More comments
-rw-r--r--kernel/kernel.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 47b08e5..00f85ba 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -70,10 +70,12 @@ ISR(TIMER1_OVF_vect)
++kern.cycles;
}
+/* task switcher */
ISR(TIMER1_COMPA_vect, ISR_NAKED)
{
struct task *tp;
+ /* save state */
pusha();
/* pick the first RTR task and move it to tail of RQ */
@@ -91,11 +93,13 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
/* set next task switch timeout */
OCR1A = TCNT1 + SLICE;
+ /* restore state */
popa();
reti();
}
+/* task scheduler */
ISR(TIMER1_COMPB_vect)
{
struct task *tp, *rq;
@@ -159,6 +163,7 @@ init(uint8_t sema)
kern.semaphore = 0;
kern.reboot = 0;
+ /* reanable watchdog */
wdt_enable(TIMEOUT);
SWITCH();