aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2011-12-12 12:24:12 +0000
committerDimitri Sokolyuk <demon@dim13.org>2011-12-12 12:24:12 +0000
commit0c50c118227a09691cb2d72e1bc48ed055789caa (patch)
treef0af56c6601efcfd6a9478575914b69a949218ca
parent04c7ebff58c6fe0471d674077fc24bcea9714be3 (diff)
fix overflow
-rw-r--r--kernel/kernel.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 33ad241..4c8c1ca 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -234,11 +234,13 @@ void
update(uint32_t release, uint32_t deadline)
{
struct task *t;
+ uint32_t now;
cli();
+ now = NOW(kernel.cycles, TCNT1);
t = kernel.running;
#if SLACK
- t->slack = NOW(kernel.cycles, TCNT1) - t->deadline;
+ t->slack = DISTANCE(now, t->deadline);
#endif
t->state = TIMEQ;
t->release += release;