mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-08-09 22:37:10 +00:00
This test was written to wait on a fifo with a timeout, return, and check the timing between the start and end using k_cycle_get_32() to see that it didn't run long. But timeouts expire on tick boundaries, and so if tick expires between the start of the test and the entry to k_fifo_get(), the timeout will take one full tick longer than expected due to aliasing. As it happened this passed everywhere except nRF (whose cycle timer is 32 kHz and thus more susceptible to coarser aliasing like this), and even there it passed for a while until the spinlock validation layer went in and added just enough time to the userspace code paths (i.e. the code between the start time fetch and the point where the fifo blocks takes longer) to open the window and push us over the limit. The workaround here is just to add a k_sleep(1) call, which is guaranteed to block and wake up synchronously at the next tick. Fixes #13289 Signed-off-by: Andy Ross <andrew.j.ross@intel.com> |
||
---|---|---|
.. | ||
fifo_api | ||
fifo_timeout | ||
fifo_usage |