|
Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
#include <zephyr/kernel.h>#include <zephyr/device.h>#include <zephyr/init.h>#include <zephyr/ztest.h>#include <zephyr/linker/sections.h>Data Structures | |
| struct | my_driver_api |
Macros | |
| #define | MY_DRIVER_LV_1 "my_driver_level_1" |
| Test cases to device driver initialization. | |
| #define | MY_DRIVER_LV_2 "my_driver_level_2" |
| #define | MY_DRIVER_LV_3 "my_driver_level_3" |
| #define | MY_DRIVER_PRI_1 "my_driver_priority_1" |
| #define | MY_DRIVER_PRI_2 "my_driver_priority_2" |
| #define | MY_DRIVER_PRI_3 "my_driver_priority_3" |
| #define | MY_DRIVER_PRI_4 "my_driver_priority_4" |
| #define | LEVEL_PRE_KERNEL_1 1 |
| #define | LEVEL_PRE_KERNEL_2 2 |
| #define | LEVEL_POST_KERNEL 3 |
| #define | PRIORITY_1 1 |
| #define | PRIORITY_2 2 |
| #define | PRIORITY_3 3 |
| #define | PRIORITY_4 4 |
Typedefs | |
| typedef int(* | my_api_configure_t) (const struct device *dev, int dev_config) |
Functions | |
| static int | my_configure (const struct device *dev, int config) |
| static __pinned_func int | my_driver_lv_1_init (const struct device *dev) |
| static __pinned_func int | my_driver_lv_2_init (const struct device *dev) |
| static int | my_driver_lv_3_init (const struct device *dev) |
| static int | my_driver_pri_1_init (const struct device *dev) |
| static int | my_driver_pri_2_init (const struct device *dev) |
| static int | my_driver_pri_3_init (const struct device *dev) |
| static int | my_driver_pri_4_init (const struct device *dev) |
| static int | my_driver_sub_pri_0_init (const struct device *dev) |
| static int | my_driver_sub_pri_1_init (const struct device *dev) |
| static int | my_driver_sub_pri_2_init (const struct device *dev) |
| DEVICE_DT_DEFINE (DT_NODELABEL(fakedomain_0), my_driver_sub_pri_0_init, NULL, NULL, NULL, POST_KERNEL, 33, NULL) | |
| Test providing control device driver initialization order. | |
| DEVICE_DT_DEFINE (DT_NODELABEL(fakedomain_1), my_driver_sub_pri_1_init, NULL, NULL, NULL, POST_KERNEL, 33, NULL) | |
| DEVICE_DT_DEFINE (DT_NODELABEL(fakedomain_2), my_driver_sub_pri_2_init, NULL, NULL, NULL, POST_KERNEL, 33, NULL) | |
Variables | |
| __pinned_bss int | init_level_sequence [3] = {0} |
| __pinned_bss int | init_priority_sequence [4] = {0} |
| __pinned_bss int | init_sub_priority_sequence [3] = {0} |
| __pinned_bss unsigned int | seq_level_cnt |
| __pinned_bss unsigned int | seq_priority_cnt |
| __pinned_bss unsigned int | seq_sub_priority_cnt |
| static const struct my_driver_api | funcs_my_drivers |
| #define LEVEL_POST_KERNEL 3 |
| #define LEVEL_PRE_KERNEL_1 1 |
| #define LEVEL_PRE_KERNEL_2 2 |
| #define MY_DRIVER_LV_1 "my_driver_level_1" |
Test cases to device driver initialization.
| #define MY_DRIVER_LV_2 "my_driver_level_2" |
| #define MY_DRIVER_LV_3 "my_driver_level_3" |
| #define MY_DRIVER_PRI_1 "my_driver_priority_1" |
| #define MY_DRIVER_PRI_2 "my_driver_priority_2" |
| #define MY_DRIVER_PRI_3 "my_driver_priority_3" |
| #define MY_DRIVER_PRI_4 "my_driver_priority_4" |
| #define PRIORITY_1 1 |
| #define PRIORITY_2 2 |
| #define PRIORITY_3 3 |
| #define PRIORITY_4 4 |
| typedef int(* my_api_configure_t) (const struct device *dev, int dev_config) |
| DEVICE_DT_DEFINE | ( | DT_NODELABEL(fakedomain_0) | , |
| my_driver_sub_pri_0_init | , | ||
| NULL | , | ||
| NULL | , | ||
| NULL | , | ||
| POST_KERNEL | , | ||
| 33 | , | ||
| NULL | |||
| ) |
Test providing control device driver initialization order.
Test that kernel shall provide control over device driver initialization order, using initialization level and priority for each instance. We use DEVICE_DEFINE to define device instances and set it's level and priority here, then we run check function later after all of this instance finish their initialization.
| DEVICE_DT_DEFINE | ( | DT_NODELABEL(fakedomain_1) | , |
| my_driver_sub_pri_1_init | , | ||
| NULL | , | ||
| NULL | , | ||
| NULL | , | ||
| POST_KERNEL | , | ||
| 33 | , | ||
| NULL | |||
| ) |
| DEVICE_DT_DEFINE | ( | DT_NODELABEL(fakedomain_2) | , |
| my_driver_sub_pri_2_init | , | ||
| NULL | , | ||
| NULL | , | ||
| NULL | , | ||
| POST_KERNEL | , | ||
| 33 | , | ||
| NULL | |||
| ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| __pinned_bss unsigned int seq_sub_priority_cnt |