|  | /* | 
|  | * Copyright (c) 2020 Intel Corporation | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #include <zephyr/kernel.h> | 
|  | #include <zephyr/sys/util.h> | 
|  | #include <zephyr/init.h> | 
|  | #include <zephyr/device.h> | 
|  | #include <version.h> | 
|  |  | 
|  | /* boot banner items */ | 
|  | #if defined(CONFIG_MULTITHREADING) && defined(CONFIG_BOOT_DELAY) &&            \ | 
|  | CONFIG_BOOT_DELAY > 0 | 
|  | #define BOOT_DELAY_BANNER " (delayed boot " STRINGIFY(CONFIG_BOOT_DELAY) "ms)" | 
|  | #else | 
|  | #define BOOT_DELAY_BANNER "" | 
|  | #endif | 
|  |  | 
|  | #if defined(CONFIG_BOOT_DELAY) || CONFIG_BOOT_DELAY > 0 | 
|  | void boot_banner(void) | 
|  | { | 
|  | #if defined(CONFIG_BOOT_DELAY) && CONFIG_BOOT_DELAY > 0 | 
|  | static const unsigned int boot_delay = CONFIG_BOOT_DELAY; | 
|  | #else | 
|  | static const unsigned int boot_delay; | 
|  | #endif | 
|  |  | 
|  | if (boot_delay > 0 && IS_ENABLED(CONFIG_MULTITHREADING)) { | 
|  | printk("***** delaying boot " STRINGIFY( | 
|  | CONFIG_BOOT_DELAY) "ms (per build configuration) *****\n"); | 
|  | k_busy_wait(CONFIG_BOOT_DELAY * USEC_PER_MSEC); | 
|  | } | 
|  |  | 
|  | #if defined(CONFIG_BOOT_BANNER) | 
|  | #ifdef BUILD_VERSION | 
|  | printk("*** Booting Zephyr OS build %s %s ***\n", | 
|  | STRINGIFY(BUILD_VERSION), BOOT_DELAY_BANNER); | 
|  | #else | 
|  | printk("*** Booting Zephyr OS version %s %s ***\n", | 
|  | KERNEL_VERSION_STRING, BOOT_DELAY_BANNER); | 
|  | #endif | 
|  | #endif | 
|  | } | 
|  | #else | 
|  | void boot_banner(void) | 
|  | { | 
|  | /* do nothing */ | 
|  | } | 
|  | #endif |