Skip to content

Commit

Permalink
vmh test: extend test for spanning
Browse files Browse the repository at this point in the history
Test both cases - when spanning multiple blocks is allowed and when
it isn't.

Signed-off-by: Guennadi Liakhovetski <[email protected]>
  • Loading branch information
lyakh committed Nov 24, 2023
1 parent 9165ee2 commit 1c28162
Showing 1 changed file with 61 additions and 9 deletions.
70 changes: 61 additions & 9 deletions zephyr/test/vmh.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,76 @@

LOG_MODULE_DECLARE(sof_boot_test, CONFIG_SOF_LOG_LEVEL);

static int vmh_test(void)
#define ALLOC_SIZE1 1616
#define ALLOC_SIZE2 26

static int vmh_test_single(bool span)
{
struct vmh_heap *h = vmh_init_heap(NULL, MEM_REG_ATTR_CORE_HEAP, 0, false);
struct vmh_heap *h = vmh_init_heap(NULL, MEM_REG_ATTR_CORE_HEAP, 0, span);

if (!h)
return -ENOMEM;
return -EINVAL;

char *buf = vmh_alloc(h, ALLOC_SIZE1);
int ret1;

if (buf) {
buf[0] = 0;
buf[ALLOC_SIZE1 - 1] = 15;

ret1 = vmh_free(h, buf);
if (ret1 < 0)
goto out;
} else if (span) {
ret1 = -ENOMEM;
LOG_ERR("Failed to allocate %u in contiguous mode", ALLOC_SIZE1);
goto out;
} else {
LOG_WRN("Ignoring failure to allocate %u in non-contiguous mode",
ALLOC_SIZE1);
}

char *buf = vmh_alloc(h, 1616);
buf = vmh_alloc(h, ALLOC_SIZE2);

if (!buf)
return -ENOMEM;
if (!buf) {
ret1 = -ENOMEM;
LOG_ERR("Failed to allocate %u", ALLOC_SIZE2);
goto out;
}

buf[0] = 0;
buf[1615] = 15;
buf[ALLOC_SIZE2 - 1] = 15;

ret1 = vmh_free(h, buf);
if (ret1 < 0)
LOG_ERR("Free error %d", ret1);

out:
int ret2 = vmh_free_heap(h);

if (ret2 < 0)
LOG_ERR("Free heap error %d", ret2);

if (!ret1)
ret1 = ret2;

return ret1;
}

static int vmh_test(void)
{
int ret = vmh_test_single(false);

if (ret < 0) {
LOG_ERR("Non-contiguous test error %d", ret);
return ret;
}

vmh_free(h, buf);
ret = vmh_test_single(true);
if (ret < 0)
LOG_ERR("Contiguous test error %d", ret);

return vmh_free_heap(h);
return ret;
}

ZTEST(sof_boot, vmh)
Expand Down

0 comments on commit 1c28162

Please sign in to comment.