| /* |
| * Copyright (c) 2023 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** |
| * @brief Run the set of special NSI tasks corresponding to the given level |
| * |
| * @param level One of NSITASK_*_LEVEL as defined in nsi_tasks.h |
| */ |
| void nsi_run_tasks(int level) |
| { |
| extern void (*__nsi_PRE_BOOT_1_tasks_start[])(void); |
| extern void (*__nsi_PRE_BOOT_2_tasks_start[])(void); |
| extern void (*__nsi_HW_INIT_tasks_start[])(void); |
| extern void (*__nsi_PRE_BOOT_3_tasks_start[])(void); |
| extern void (*__nsi_FIRST_SLEEP_tasks_start[])(void); |
| extern void (*__nsi_ON_EXIT_PRE_tasks_start[])(void); |
| extern void (*__nsi_ON_EXIT_POST_tasks_start[])(void); |
| extern void (*__nsi_tasks_end[])(void); |
| |
| static void (**nsi_pre_tasks[])(void) = { |
| __nsi_PRE_BOOT_1_tasks_start, |
| __nsi_PRE_BOOT_2_tasks_start, |
| __nsi_HW_INIT_tasks_start, |
| __nsi_PRE_BOOT_3_tasks_start, |
| __nsi_FIRST_SLEEP_tasks_start, |
| __nsi_ON_EXIT_PRE_tasks_start, |
| __nsi_ON_EXIT_POST_tasks_start, |
| __nsi_tasks_end |
| }; |
| |
| void (**fptr)(void); |
| |
| for (fptr = nsi_pre_tasks[level]; fptr < nsi_pre_tasks[level+1]; |
| fptr++) { |
| if (*fptr) { /* LCOV_EXCL_BR_LINE */ |
| (*fptr)(); |
| } |
| } |
| } |