summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ao_task.c5
1 files changed, 4 insertions, 1 deletions
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;
}