zephyr/tests/kernel/tickless/tickless
Andy Ross 32bb2395c2 timeout: Fix up API usage
Kernel timeouts have always been a 32 bit integer despite the
existence of generation macros, and existing code has been
inconsistent about using them.  Upcoming commits are going to make the
timeout arguments opaque, so fix things up to be rigorously correct.
Changes include:

+ Adding a K_TIMEOUT_EQ() macro for code that needs to compare timeout
  values for equality (e.g. with K_FOREVER or K_NO_WAIT).

+ Adding a k_msleep() synonym for k_sleep() which can continue to take
  integral arguments as k_sleep() moves away to timeout arguments.

+ Pervasively using the K_MSEC(), K_SECONDS(), et. al. macros to
  generate timeout arguments.

+ Removing the usage of K_NO_WAIT as the final argument to
  K_THREAD_DEFINE().  This is just a count of milliseconds and we need
  to use a zero.

This patch include no logic changes and should not affect generated
code at all.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2020-03-31 19:40:47 -04:00
..
src timeout: Fix up API usage 2020-03-31 19:40:47 -04:00
CMakeLists.txt cmake: use find_package to locate Zephyr 2020-03-27 16:23:46 +01:00
prj.conf
README.txt
testcase.yaml boards: remove quarl_se_c1000 2019-07-29 21:30:25 -07:00

Title: Tickless Idle Support

Description:

This test verifies the timing accuracy of the tickless idle feature.

The test first calibrates itself by repeatedly sleeping for 10 ticks with the
tickless idle feature disabled.  It then repeats this process with the tickless
idle feature enabled.  Lastly, it compares the average measured duration of
each approach and displays the result.  The tick timing is correct if the
'diff ticks' with tickless enabled matches the SLEEP_TICKS (10) setting in
the source.

The demonstration utilizes microkernel mutex APIs, timers and tickless
idle mode.

--------------------------------------------------------------------------------

Building and Running Project:

This project outputs to the console.  It can be built and executed
on QEMU as follows:

    make run

--------------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

--------------------------------------------------------------------------------

Sample Output:

Tickless Idle Test
Calibrating TSC...
Calibrated time stamp period = 0x00000000163adc3a
Do the real test with tickless enabled
Going idle for 10 ticks...
start ticks     : 343
end   ticks     : 353
diff  ticks     : 10
diff  time stamp: 0x0000000018a69898
Cal   time stamp: 0x00000000163adc3a
variance in time stamp diff: 10 percent
===================================================================
PROJECT EXECUTION SUCCESSFUL