summaryrefslogtreecommitdiff
path: root/src/core/ao_task.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ao_task.c')
-rw-r--r--src/core/ao_task.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/ao_task.c b/src/core/ao_task.c
index 4593bd79..65654731 100644
--- a/src/core/ao_task.c
+++ b/src/core/ao_task.c
@@ -125,6 +125,7 @@ ao_sleep(__xdata void *wchan)
ao_yield();
if (ao_cur_task->wchan) {
ao_cur_task->wchan = NULL;
+ ao_cur_task->alarm = 0;
return 1;
}
return 0;
@@ -157,6 +158,16 @@ ao_clear_alarm(void)
ao_cur_task->alarm = 0;
}
+static __xdata uint8_t ao_forever;
+
+void
+ao_delay(uint16_t ticks)
+{
+ ao_alarm(ticks);
+ ao_sleep(&ao_forever);
+ ao_clear_alarm();
+}
+
void
ao_exit(void)
{