aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-02-23 15:13:35 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-02-23 15:13:35 +0000
commitb5f14c2ee7bd024f6530351ad02bf2730788478a (patch)
treeccb01eb90a283c2cc38a0331d0acabd88533b7f5
parent26efb8f08eb1c38ce2d09b87fb5465324033b896 (diff)
remove auxiliary variable
-rw-r--r--kernel/kernel.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 5108123..9f559c6 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -64,7 +64,6 @@ ISR(TIMER1_OVF_vect)
ISR(TIMER1_COMPA_vect, ISR_NAKED)
{
struct task *tp, *tmp;
- int32_t dist;
uint32_t now;
PUSH_ALL();
@@ -74,13 +73,13 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
PORTB ^= _BV(PB1); /* DEBUG */
#endif
+ /* store context */
kernel.current->sp = SP;
TAILQ_REMOVE(&kernel.runq, kernel.current, link);
/* release waiting tasks */
TAILQ_FOREACH_SAFE(tp, &kernel.timeq, link, tmp) {
- dist = DISTANCE(now, tp->release);
- if (dist <= 0) {
+ if (DISTANCE(now, tp->release) <= 0) {
tp->state = RUNQ;
TAILQ_REMOVE(&kernel.timeq, tp, link);
TAILQ_INSERT_TAIL(&kernel.runq, tp, link);
@@ -141,12 +140,12 @@ ISR(TIMER1_COMPA_vect, ISR_NAKED)
if (TAILQ_EMPTY(&kernel.runq))
TAILQ_INSERT_TAIL(&kernel.runq, &kernel.task[0], link);
+ /* restore context */
kernel.current = TAILQ_FIRST(&kernel.runq);
SP = kernel.current->sp;
tp = TAILQ_FIRST(&kernel.timeq);
- dist = (tp) ? (now + DISTANCE(now, tp->release)) : 0xffff;
- OCR1A = (uint16_t)dist;
+ OCR1A = (tp) ? (uint16_t)(now + DISTANCE(now, tp->release)) : 0xffff;
POP_ALL();
reti();