X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_notask.c;fp=src%2Fkernel%2Fao_notask.c;h=8c5743fdecd0a0a1f7ae62c528e32d27c98a138b;hb=48bc180211f226b0406aae28a85d5e5ee77455a2;hp=e973c7ae1723e8fa8811543e092590694622bf3f;hpb=b4a31f4bba8edee32d4f41780bd62bcfa064f20a;p=fw%2Faltos diff --git a/src/kernel/ao_notask.c b/src/kernel/ao_notask.c index e973c7ae..8c5743fd 100644 --- a/src/kernel/ao_notask.c +++ b/src/kernel/ao_notask.c @@ -40,18 +40,21 @@ ao_sleep(void *wchan) } #if HAS_AO_DELAY +void +ao_delay_until(AO_TICK_TYPE target) +{ + ao_arch_block_interrupts(); + while ((int16_t) (target - ao_tick_count) > 0) + ao_sleep((void *) &ao_tick_count); + ao_arch_release_interrupts(); +} + void ao_delay(AO_TICK_TYPE ticks) { - 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_delay_until(ao_time() + ticks); } + #endif void