test/mem: check segment fd API
Use memory autotest to also test segment fd API. This will not do any checks - just see if the relevant API's return success or indicate that the API is not supported. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> Acked-by: Tiwei Bie <tiwei.bie@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
c75f535ac5
commit
c3e35a0966
@ -37,10 +37,44 @@ check_mem(const struct rte_memseg_list *msl __rte_unused,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
check_seg_fds(const struct rte_memseg_list *msl, const struct rte_memseg *ms,
|
||||
void *arg __rte_unused)
|
||||
{
|
||||
size_t offset;
|
||||
int ret;
|
||||
|
||||
/* skip external segments */
|
||||
if (msl->external)
|
||||
return 0;
|
||||
|
||||
/* try segment fd first. we're in a callback, so thread-unsafe */
|
||||
ret = rte_memseg_get_fd_thread_unsafe(ms);
|
||||
if (ret < 0) {
|
||||
/* ENOTSUP means segment is valid, but there is not support for
|
||||
* segment fd API (e.g. on FreeBSD).
|
||||
*/
|
||||
if (errno == ENOTSUP)
|
||||
return 1;
|
||||
/* all other errors are treated as failures */
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* we're able to get memseg fd - try getting its offset */
|
||||
ret = rte_memseg_get_fd_offset_thread_unsafe(ms, &offset);
|
||||
if (ret < 0) {
|
||||
if (errno == ENOTSUP)
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_memory(void)
|
||||
{
|
||||
uint64_t s;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* dump the mapped memory: the python-expect script checks
|
||||
@ -59,6 +93,15 @@ test_memory(void)
|
||||
/* try to read memory (should not segfault) */
|
||||
rte_memseg_walk(check_mem, NULL);
|
||||
|
||||
/* check segment fd support */
|
||||
ret = rte_memseg_walk(check_seg_fds, NULL);
|
||||
if (ret == 1) {
|
||||
printf("Segment fd API is unsupported\n");
|
||||
} else if (ret == -1) {
|
||||
printf("Error getting segment fd's\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user