projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Add initial TeleLCO-v3 bits
[fw/altos]
/
src
/
kernel
/
ao_notask.c
diff --git
a/src/kernel/ao_notask.c
b/src/kernel/ao_notask.c
index 7207353af5444891b7982207c24d72fe5c3ddabc..c87bbbbbe21cbf32ab217b2856f105a299af379f 100644
(file)
--- a/
src/kernel/ao_notask.c
+++ b/
src/kernel/ao_notask.c
@@
-21,7
+21,7
@@
static volatile void *ao_wchan;
uint8_t
static volatile void *ao_wchan;
uint8_t
-ao_sleep(
__xdata
void *wchan)
+ao_sleep(void *wchan)
{
#if 1
ao_wchan = wchan;
{
#if 1
ao_wchan = wchan;
@@
-41,21
+41,24
@@
ao_sleep(__xdata void *wchan)
#if HAS_AO_DELAY
void
#if HAS_AO_DELAY
void
-ao_delay
(uint16_t ticks
)
+ao_delay
_until(AO_TICK_TYPE target
)
{
{
- AO_TICK_TYPE target;
-
- if (!ticks)
- ticks = 1;
- target = ao_tick_count + ticks;
- do {
- ao_sleep(&ao_time);
- } while ((int16_t) (target - ao_tick_count) > 0);
+ ao_arch_block_interrupts();
+ while ((AO_TICK_SIGNED) (target - ao_tick_count) > 0)
+ ao_sleep((void *) &ao_tick_count);
+ ao_arch_release_interrupts();
}
}
+
+void
+ao_delay(AO_TICK_TYPE ticks)
+{
+ ao_delay_until(ao_time() + ticks);
+}
+
#endif
void
#endif
void
-ao_wakeup(
__xdata
void *wchan)
+ao_wakeup(void *wchan)
{
(void) wchan;
ao_wchan = 0;
{
(void) wchan;
ao_wchan = 0;