| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <ztest.h> |
| |
| #define NSEC_PER_MSEC (uint64_t)(NSEC_PER_USEC * USEC_PER_MSEC) |
| /** |
| * @brief Test delay during boot |
| * @defgroup kernel_init_tests Init |
| * @ingroup all_tests |
| * @{ |
| */ |
| |
| /** |
| * @brief This module verifies the delay specified during boot. |
| */ |
| void test_bootdelay(void) |
| { |
| if (CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC > 1000000000) { |
| /* Systems with very fast counters (like the x86 TSC) |
| * and long firmware startup (often 10+ seconds on a |
| * EFI PC!) can easily roll this over during startup, |
| * and there's no way to detect that case with a 32 |
| * bit OS API. Just skip it if we have a GHz-scale |
| * counter. |
| */ |
| ztest_test_skip(); |
| } |
| |
| uint32_t current_cycles = k_cycle_get_32(); |
| |
| /* compare this with the boot delay specified */ |
| zassert_true(k_cyc_to_ns_floor64(current_cycles) >= |
| (NSEC_PER_MSEC * CONFIG_BOOT_DELAY), |
| "boot delay not executed: %d < %d", |
| (uint32_t)k_cyc_to_ns_floor64(current_cycles), |
| (NSEC_PER_MSEC * CONFIG_BOOT_DELAY)); |
| } |
| |
| /** |
| * @} |
| */ |