2016-12-20 12:28:07 +08:00
|
|
|
Title: Memory Slab APIs
|
|
|
|
|
|
|
|
Description:
|
|
|
|
|
|
|
|
This test verifies that the kernel memory slab APIs operate as expected.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
Building and Running Project:
|
|
|
|
|
|
|
|
This microkernel project outputs to the console. It can be built and executed
|
|
|
|
on QEMU as follows:
|
|
|
|
|
2017-01-08 05:31:34 +08:00
|
|
|
make run
|
2016-12-20 12:28:07 +08:00
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
tc_start() - Test Kernel memory slabs
|
|
|
|
Starts RegressionTask
|
|
|
|
===================================================================
|
|
|
|
(1) - Allocate and free 2 blocks in <RegressionTask>
|
|
|
|
===================================================================
|
|
|
|
Function testSlabGetAllBlocks
|
|
|
|
MAP_LgBlks used 0 blocks
|
|
|
|
k_mem_slab_alloc OK, p[0] = 0x00104e00
|
|
|
|
MAP_LgBlks used 1 blocks
|
|
|
|
k_mem_slab_alloc OK, p[1] = 0x00104a00
|
|
|
|
MAP_LgBlks used 2 blocks
|
|
|
|
k_mem_slab_alloc RC_FAIL expected as all (2) blocks are used.
|
|
|
|
===================================================================
|
|
|
|
printPointers: p[0] = 0x00104e00, p[1] = 0x00104a00,
|
|
|
|
===================================================================
|
|
|
|
Function testSlabFreeAllBlocks
|
|
|
|
MAP_LgBlks used 2 blocks
|
|
|
|
block ptr to free p[0] = 0x00104e00
|
|
|
|
MAP_LgBlks freed 1 block
|
|
|
|
MAP_LgBlks used 1 blocks
|
|
|
|
block ptr to free p[1] = 0x00104a00
|
|
|
|
MAP_LgBlks freed 2 block
|
|
|
|
MAP_LgBlks used 0 blocks
|
|
|
|
===================================================================
|
|
|
|
Starts HelperTask
|
|
|
|
===================================================================
|
|
|
|
(2) - Allocate 2 blocks in <HelperTask>
|
|
|
|
===================================================================
|
|
|
|
Function testSlabGetAllBlocks
|
|
|
|
MAP_LgBlks used 0 blocks
|
|
|
|
k_mem_slab_alloc OK, p[0] = 0x00104a00
|
|
|
|
MAP_LgBlks used 1 blocks
|
|
|
|
k_mem_slab_alloc OK, p[1] = 0x00104e00
|
|
|
|
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 <RegressionTask>
|
|
|
|
===================================================================
|
|
|
|
RegressionTask: k_mem_slab_alloc times out which is expected
|
|
|
|
RegressionTask: start to wait for block
|
|
|
|
===================================================================
|
|
|
|
(4) - Free a block in <HelperTask> to unblock the other task from alloc timeout
|
|
|
|
===================================================================
|
|
|
|
HelperTask: About to free a memory block
|
|
|
|
RegressionTask: k_mem_slab_alloc OK, block allocated at 0x00104a00
|
|
|
|
RegressionTask: start to wait for block
|
|
|
|
===================================================================
|
|
|
|
(5) <HelperTask> freeing the next block
|
|
|
|
===================================================================
|
|
|
|
HelperTask: About to free another memory block
|
|
|
|
RegressionTask: k_mem_slab_alloc OK, block allocated at 0x00104e00
|
|
|
|
HelperTask: freed all blocks allocated by this task
|
|
|
|
===================================================================
|
|
|
|
PASS - HelperTask.
|
|
|
|
RegressionTask: Used 2 block
|
|
|
|
RegressionTask: 1 block freed, used 1 block
|
|
|
|
===================================================================
|
|
|
|
PASS - RegressionTask.
|
|
|
|
===================================================================
|
|
|
|
PROJECT EXECUTION SUCCESSFUL
|
|
|
|
|