X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fkernel%2Fao_notask.c;h=8c5743fdecd0a0a1f7ae62c528e32d27c98a138b;hb=48bc180211f226b0406aae28a85d5e5ee77455a2;hp=a5bdc8a7c65e5d81dbc6e0ad8b7bcf9ff54261d8;hpb=0686a7b8aec524d81bda4c572549a3a068ce0eed;p=fw%2Faltos diff --git a/src/kernel/ao_notask.c b/src/kernel/ao_notask.c index a5bdc8a7..8c5743fd 100644 --- a/src/kernel/ao_notask.c +++ b/src/kernel/ao_notask.c @@ -41,17 +41,20 @@ ao_sleep(void *wchan) #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 ((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_delay_until(ao_time() + ticks); +} + #endif void