From: Keith Packard Date: Sat, 19 Dec 2009 23:31:36 +0000 (-0800) Subject: Ensure that ao_alarm waits at least the specified time X-Git-Tag: debian/0.6+85+g82fdbfe~23 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=eddb82390a0ecb07ef83c04861993842906b03ab;ds=sidebyside Ensure that ao_alarm waits at least the specified time Because the timer tick may happen soon, it's important to delay by another tick to ensure that we don't wake up early. Signed-off-by: Keith Packard --- diff --git a/src/ao_task.c b/src/ao_task.c index 4664163d..4a78766e 100644 --- a/src/ao_task.c +++ b/src/ao_task.c @@ -217,7 +217,10 @@ ao_wakeup(__xdata void *wchan) void ao_alarm(uint16_t delay) { - if (!(ao_cur_task->alarm = ao_time() + delay)) + /* Make sure we sleep *at least* delay ticks, which means adding + * one to account for the fact that we may be close to the next tick + */ + if (!(ao_cur_task->alarm = ao_time() + delay + 1)) ao_cur_task->alarm = 1; }