zephyr/tests/kernel/mem_slab/mslab
Torsten Rasmussen 2760fb9eda tests: added kernel tests for arm arch with linker script generator
This commit adds an additional test case for several kernel test suites
to ensure that the linker script generator is working correctly for a
subset of the Zephyr test suites.

The ensures that the basic functionality of the linker script generator
is working while still keep the performance impact on CI at a minimal
level.

Using the kernel tests is a trade-off between testing coverage of the
linker script generator and the time it takes to complete CI.

The kernel tests is considered to have the broadest coverage of various
features important for the generated linker script.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2021-08-30 08:54:23 -04:00
..
src
CMakeLists.txt
prj.conf
README.txt
testcase.yaml tests: added kernel tests for arm arch with linker script generator 2021-08-30 08:54:23 -04:00

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