zephyr/tests/kernel/mem_slab/mslab
Marc Herbert debade9121 tests: make find_package(Zephyr...) REQUIRED
... because it is (required).

This makes a difference when building with CMake and forgetting
ZEPHYR_BASE or not registering Zephyr in the CMake package registry.

In this particular case, REQUIRED turns this harmless looking log
statement:

-- Could NOT find Zephyr (missing: Zephyr_DIR)
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Check for working C compiler: /usr/bin/cc
-- ...
-- ...
-- ...
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:8 (target_sources):
  Cannot specify sources for target "app" which is not built by
  this project.

... into this louder, clearer, faster and (last but not least) final
error:

CMake Error at CMakeLists.txt:5 (find_package):
  Could not find a package configuration file provided by "Zephyr" with
  any of the following names:

    ZephyrConfig.cmake
    zephyr-config.cmake

  Add the installation prefix of "Zephyr" to CMAKE_PREFIX_PATH or set
  "Zephyr_DIR" to a directory containing one of the above files.  If
  "Zephyr" provides a separate development package or SDK, be sure it
  has been installed.

-- Configuring incomplete, errors occurred!

Signed-off-by: Marc Herbert <marc.herbert@intel.com>
2020-05-29 10:47:25 +02:00
..
src timeout: Fix up API usage 2020-03-31 19:40:47 -04:00
CMakeLists.txt tests: make find_package(Zephyr...) REQUIRED 2020-05-29 10:47:25 +02:00
README.txt
prj.conf
testcase.yaml

README.txt

Title: Memory Slab APIs

Description:

This test verifies that the kernel memory slab APIs operate as expected.

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

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:

starting test - Test Kernel memory slabs
Starts main
===================================================================
(1) - Allocate and free 2 blocks in <main>
===================================================================
Function test_slab_get_all_blocks
MAP_LgBlks used 0 blocks
  k_mem_slab_alloc OK, p[0] = 0x00406400
MAP_LgBlks used 1 blocks
  k_mem_slab_alloc OK, p[1] = 0x00406000
MAP_LgBlks used 2 blocks
  k_mem_slab_alloc RC_FAIL expected as all (2) blocks are used.
===================================================================
print_pointers: p[0] = 0x00406400, p[1] = 0x00406000,
===================================================================
Function test_slab_free_all_blocks
MAP_LgBlks used 2 blocks
  block ptr to free p[0] = 0x00406400
MAP_LgBlks freed 1 block
MAP_LgBlks used 1 blocks
  block ptr to free p[1] = 0x00406000
MAP_LgBlks freed 2 block
MAP_LgBlks used 0 blocks
===================================================================
Starts helper_thread
===================================================================
(2) - Allocate 2 blocks in <helper_thread>
===================================================================
Function test_slab_get_all_blocks
MAP_LgBlks used 0 blocks
  k_mem_slab_alloc OK, p[0] = 0x00406000
MAP_LgBlks used 1 blocks
  k_mem_slab_alloc OK, p[1] = 0x00406400
MAP_LgBlks used 2 blocks
  k_mem_slab_alloc RC_FAIL expected as all (2) blocks are used.
===================================================================
===================================================================
(3) - Further allocation results in  timeout in <main>
===================================================================
main: k_mem_slab_alloc times out which is expected
main: start to wait for block
===================================================================
(4) - Free a block in <helper_thread> to unblock the other task from alloc timeout
===================================================================
helper_thread: About to free a memory block
main: k_mem_slab_alloc OK, block allocated at 0x00406000
main: start to wait for block
===================================================================
(5) <helper_thread> freeing the next block
===================================================================
helper_thread: About to free another memory block
main: k_mem_slab_alloc OK, block allocated at 0x00406400
helper_thread: freed all blocks allocated by this task
PASS - helper_thread.
===================================================================
main: Used 2 block
main: 1 block freed, used 1 block
PASS - main.
===================================================================
===================================================================
PROJECT EXECUTION SUCCESSFUL