tests: kernel: mem_slab: Add no multithreading support

Extended mslab_api test suite with CONFIG_MULTITHREADING=n
configuration.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This commit is contained in:
Krzysztof Chruscinski 2021-04-19 09:51:38 +02:00 committed by Carles Cufí
commit 693c3fbb9d
2 changed files with 22 additions and 10 deletions

View file

@ -63,6 +63,7 @@ static void tmslab_alloc_timeout(void *data)
struct k_mem_slab *pslab = (struct k_mem_slab *)data; struct k_mem_slab *pslab = (struct k_mem_slab *)data;
void *block[BLK_NUM], *block_fail; void *block[BLK_NUM], *block_fail;
int64_t tms; int64_t tms;
int err;
for (int i = 0; i < BLK_NUM; i++) { for (int i = 0; i < BLK_NUM; i++) {
zassert_true(k_mem_slab_alloc(pslab, &block[i], K_NO_WAIT) == 0, zassert_true(k_mem_slab_alloc(pslab, &block[i], K_NO_WAIT) == 0,
@ -73,16 +74,21 @@ static void tmslab_alloc_timeout(void *data)
/** TESTPOINT: -ENOMEM Returned without waiting.*/ /** TESTPOINT: -ENOMEM Returned without waiting.*/
zassert_equal(k_mem_slab_alloc(pslab, &block_fail, K_NO_WAIT), -ENOMEM, zassert_equal(k_mem_slab_alloc(pslab, &block_fail, K_NO_WAIT), -ENOMEM,
NULL); NULL);
/** TESTPOINT: -EAGAIN Waiting period timed out*/
tms = k_uptime_get(); tms = k_uptime_get();
zassert_equal(k_mem_slab_alloc(pslab, &block_fail, K_MSEC(TIMEOUT)), err = k_mem_slab_alloc(pslab, &block_fail, K_MSEC(TIMEOUT));
-EAGAIN, if (IS_ENABLED(CONFIG_MULTITHREADING)) {
NULL); /** TESTPOINT: -EAGAIN Waiting period timed out*/
/** zassert_equal(err, -EAGAIN, NULL);
* TESTPOINT: timeout Maximum time to wait for operation to /**
* complete (in milliseconds) * TESTPOINT: timeout Maximum time to wait for operation to
*/ * complete (in milliseconds)
zassert_true(k_uptime_delta(&tms) >= TIMEOUT, NULL); */
zassert_true(k_uptime_delta(&tms) >= TIMEOUT, NULL);
} else {
/* If no multithreading any timeout is treated as K_NO_WAIT */
zassert_equal(err, -ENOMEM, NULL);
zassert_true(k_uptime_delta(&tms) < TIMEOUT, NULL);
}
for (int i = 0; i < BLK_NUM; i++) { for (int i = 0; i < BLK_NUM; i++) {
k_mem_slab_free(pslab, &block[i]); k_mem_slab_free(pslab, &block[i]);
@ -113,7 +119,7 @@ static void tmslab_used_get(void *data)
zassert_equal(k_mem_slab_num_used_get(pslab), BLK_NUM, NULL); zassert_equal(k_mem_slab_num_used_get(pslab), BLK_NUM, NULL);
zassert_equal(k_mem_slab_alloc(pslab, &block_fail, K_MSEC(TIMEOUT)), zassert_equal(k_mem_slab_alloc(pslab, &block_fail, K_MSEC(TIMEOUT)),
-EAGAIN, IS_ENABLED(CONFIG_MULTITHREADING) ? -EAGAIN : -ENOMEM,
NULL); NULL);
zassert_equal(k_mem_slab_num_free_get(pslab), 0, NULL); zassert_equal(k_mem_slab_num_free_get(pslab), 0, NULL);
zassert_equal(k_mem_slab_num_used_get(pslab), BLK_NUM, NULL); zassert_equal(k_mem_slab_num_used_get(pslab), BLK_NUM, NULL);

View file

@ -1,3 +1,9 @@
tests: tests:
kernel.memory_slabs.api: kernel.memory_slabs.api:
tags: kernel tags: kernel
kernel.memory_slabs.api_no_multithreading:
tags: kernel
platform_allow: qemu_cortex_m3 qemu_cortex_m0
extra_configs:
- CONFIG_MULTITHREADING=n