From 9d9d6a985a813c81c84d39c4a42d2d19c2b6fa16 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 12 Dec 2011 12:33:00 +0000 Subject: update set() --- kernel/kernel.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/kernel.c b/kernel/kernel.c index 6dc4458..15fb4b1 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -222,11 +222,19 @@ signal(uint8_t sema) void set(uint32_t release, uint32_t deadline) { + struct task *t; + uint32_t now; + cli(); - kernel.running->state = TIMEQ; - kernel.running->release = release; - kernel.running->deadline = deadline; + now = NOW(kernel.cycles, TCNT1); + t = kernel.running; +#if SLACK + t->slack = DISTANCE(now, t->deadline); +#endif + t->state = TIMEQ; + t->release = release; + t->deadline = deadline; SCHEDULE(); } @@ -236,6 +244,7 @@ update(uint32_t release, uint32_t deadline) { struct task *t; uint32_t now; + cli(); now = NOW(kernel.cycles, TCNT1); -- cgit v1.2.3