aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2011-12-20 16:00:35 +0000
committerDimitri Sokolyuk <demon@dim13.org>2011-12-20 16:00:35 +0000
commit20ba613e5ba14ac212f37623245657219a875764 (patch)
tree2aff706ec9f7125742a4d88f8f79dff0de26abdd /kernel/kernel.c
parent2d0aabaa8240c5aab1898aba3505eab4a0114b0b (diff)
experimental: shifted start time
Diffstat (limited to 'kernel/kernel.c')
-rw-r--r--kernel/kernel.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index bf7af98..d950124 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -27,6 +27,8 @@
#include "stack.h"
#include "queue.h"
+#define DEBUG 0
+
enum State { TERMINATED, RUNQ, TIMEQ, WAITQ };
#define LO8(x) ((uint8_t)((uint16_t)(x)))
@@ -72,7 +74,9 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
now = NOW(kernel.cycles, TCNT1);
+ #if DEBUG
PORTB ^= _BV(PB1); /* DEBUG */
+ #endif
/* save stack pointer */
tp = SIMPLEQ_FIRST(&kernel.runq);
@@ -126,7 +130,9 @@ init(uint8_t stack)
TIMSK = (_BV(OCIE1A) | _BV(TOIE1)); /* enable interrupts */
OCR1A = 0; /* default overflow */
+ #if DEBUG
DDRB |= _BV(PB1); /* DEBUG */
+ #endif
SIMPLEQ_INIT(&kernel.runq);
@@ -169,7 +175,7 @@ exec(void (*fun)(void *), uint8_t stack, void *args, uint8_t prio)
t = ++kernel.last;
- t->release = 0;
+ t->release = NOW(kernel.cycles, TCNT1);
t->prio = prio;
t->state = TIMEQ;