projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Replace ao_alarm/ao_clear_alarm with ao_sleep_for
[fw/altos]
/
src
/
kernel
/
ao_task.c
diff --git
a/src/kernel/ao_task.c
b/src/kernel/ao_task.c
index bafb49439d4441022be1b9159947f30a9f8d7bff..1ecdd7dd1261246dc18eeb1483262274c2a76cb9 100644
(file)
--- a/
src/kernel/ao_task.c
+++ b/
src/kernel/ao_task.c
@@
-450,7
+450,7
@@
ao_wakeup(__xdata void *wchan) __reentrant
ao_check_stack();
}
ao_check_stack();
}
-void
+
static
void
ao_alarm(uint16_t delay)
{
#if HAS_TASK_QUEUE
ao_alarm(uint16_t delay)
{
#if HAS_TASK_QUEUE
@@
-468,7
+468,7
@@
ao_alarm(uint16_t delay)
#endif
}
#endif
}
-void
+
static
void
ao_clear_alarm(void)
{
#if HAS_TASK_QUEUE
ao_clear_alarm(void)
{
#if HAS_TASK_QUEUE
@@
-483,14
+483,24
@@
ao_clear_alarm(void)
#endif
}
#endif
}
+uint8_t
+ao_sleep_for(__xdata void *wchan, uint16_t timeout)
+{
+ uint8_t ret;
+ if (timeout)
+ ao_alarm(timeout);
+ ret = ao_sleep(wchan);
+ if (timeout)
+ ao_clear_alarm();
+ return ret;
+}
+
static __xdata uint8_t ao_forever;
void
ao_delay(uint16_t ticks)
{
static __xdata uint8_t ao_forever;
void
ao_delay(uint16_t ticks)
{
- ao_alarm(ticks);
- ao_sleep(&ao_forever);
- ao_clear_alarm();
+ ao_sleep_for(&ao_forever, ticks);
}
void
}
void