/* * Copyright (c) 2017 Oticon A/S * * SPDX-License-Identifier: Apache-2.0 */ /** * @brief Run the set of special native tasks corresponding to the given level * * @param level One of _NATIVE_*_LEVEL as defined in soc.h */ void run_native_tasks(int level) { extern void (*__native_PRE_BOOT_1_tasks_start[])(void); extern void (*__native_PRE_BOOT_2_tasks_start[])(void); extern void (*__native_PRE_BOOT_3_tasks_start[])(void); extern void (*__native_FIRST_SLEEP_tasks_start[])(void); extern void (*__native_ON_EXIT_tasks_start[])(void); extern void (*__native_tasks_end[])(void); static void (**native_pre_tasks[])(void) = { __native_PRE_BOOT_1_tasks_start, __native_PRE_BOOT_2_tasks_start, __native_PRE_BOOT_3_tasks_start, __native_FIRST_SLEEP_tasks_start, __native_ON_EXIT_tasks_start, __native_tasks_end }; void (**fptr)(void); for (fptr = native_pre_tasks[level]; fptr < native_pre_tasks[level+1]; fptr++) { if (*fptr) { /* LCOV_EXCL_BR_LINE */ (*fptr)(); } } }