Branch data Line data Source code
1 : : /*
2 : : * Copyright (c) 2017 Oticon A/S
3 : : *
4 : : * SPDX-License-Identifier: Apache-2.0
5 : : */
6 : :
7 : : /**
8 : : * @brief Run the set of special native tasks corresponding to the given level
9 : : *
10 : : * @param level One of _NATIVE_*_LEVEL as defined in soc.h
11 : : */
12 : 4 : void run_native_tasks(int level)
13 : : {
14 : 4 : extern void (*__native_PRE_BOOT_1_tasks_start[])(void);
15 : 4 : extern void (*__native_PRE_BOOT_2_tasks_start[])(void);
16 : 4 : extern void (*__native_PRE_BOOT_3_tasks_start[])(void);
17 : 4 : extern void (*__native_FIRST_SLEEP_tasks_start[])(void);
18 : 4 : extern void (*__native_ON_EXIT_tasks_start[])(void);
19 : 4 : extern void (*__native_tasks_end[])(void);
20 : :
21 : 4 : static void (**native_pre_tasks[])(void) = {
22 : : __native_PRE_BOOT_1_tasks_start,
23 : : __native_PRE_BOOT_2_tasks_start,
24 : : __native_PRE_BOOT_3_tasks_start,
25 : : __native_FIRST_SLEEP_tasks_start,
26 : : __native_ON_EXIT_tasks_start,
27 : : __native_tasks_end
28 : : };
29 : :
30 : 4 : void (**fptr)(void);
31 : :
32 [ + + ]: 5 : for (fptr = native_pre_tasks[level]; fptr < native_pre_tasks[level+1];
33 : 1 : fptr++) {
34 : 1 : if (*fptr) { /* LCOV_EXCL_BR_LINE */
35 : 1 : (*fptr)();
36 : : }
37 : : }
38 : 4 : }
|