diff options
Diffstat (limited to 'src/kernel/ao_task.c')
| -rw-r--r-- | src/kernel/ao_task.c | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/src/kernel/ao_task.c b/src/kernel/ao_task.c index e430edc6..03d69caa 100644 --- a/src/kernel/ao_task.c +++ b/src/kernel/ao_task.c @@ -165,13 +165,14 @@ ao_task_check_alarm(uint16_t tick)  {  	struct ao_task	*alarm, *next; -	ao_list_for_each_entry_safe(alarm, next, &alarm_queue, struct ao_task, alarm_queue) { -		if ((int16_t) (tick - alarm->alarm) < 0) -			break; -		alarm->alarm = 0; -		ao_task_from_alarm_queue(alarm); -		ao_task_to_run_queue(alarm); -	} +	ao_arch_critical( +		ao_list_for_each_entry_safe(alarm, next, &alarm_queue, struct ao_task, alarm_queue) { +			if ((int16_t) (tick - alarm->alarm) < 0) +				break; +			alarm->alarm = 0; +			ao_task_from_alarm_queue(alarm); +			ao_task_to_run_queue(alarm); +		});  }  void | 
