From ab090ddded09f886b6279308bab66c6f8ee22d90 Mon Sep 17 00:00:00 2001 From: Victor Brzeski Date: Mon, 1 Dec 2025 16:49:51 -0800 Subject: [PATCH] init: validate init priorities at compile-time Introduce a compile-time check for init priorities. Signed-off-by: Victor Brzeski --- include/zephyr/device.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/zephyr/device.h b/include/zephyr/device.h index 41fc0a8450fa5..4be70f605f4ed 100644 --- a/include/zephyr/device.h +++ b/include/zephyr/device.h @@ -1251,6 +1251,15 @@ device_get_dt_nodelabels(const struct device *dev) (COND_CODE_1(Z_INIT_POST_KERNEL_##level, (), \ (ZERO_OR_COMPILE_ERROR(0))))))) +/** + * @brief Issue an error if the given init priority is not supported. + * + * @param prio Priority level + */ +#define Z_DEVICE_CHECK_INIT_PRIO(prio) \ + BUILD_ASSERT(0 <= (prio) && (prio) <= 99, \ + Z_STRINGIFY(prio) "invalid priority") + /** * @brief Define the init entry for a device. * @@ -1262,6 +1271,7 @@ device_get_dt_nodelabels(const struct device *dev) */ #define Z_DEVICE_INIT_ENTRY_DEFINE(node_id, dev_id, level, prio) \ Z_DEVICE_CHECK_INIT_LEVEL(level) \ + Z_DEVICE_CHECK_INIT_PRIO(prio) \ \ static const Z_DECL_ALIGN(struct init_entry) __used __noasan Z_INIT_ENTRY_SECTION( \ level, prio, Z_DEVICE_INIT_SUB_PRIO(node_id)) \