#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_eal.h>
-#include <rte_eal_memconfig.h>
+#include <rte_lcore.h>
#include <rte_common.h>
#include <rte_string_fns.h>
#include <rte_errno.h>
#include <rte_malloc.h>
-#include "../../lib/librte_eal/common/malloc_elem.h"
-#include "../../lib/librte_eal/common/eal_memcfg.h"
+
+#include "malloc_elem.h"
#include "test.h"
return 0;
}
+static int
+test_memzone_invalid_flags(void)
+{
+ const struct rte_memzone *mz;
+
+ mz = rte_memzone_lookup(TEST_MEMZONE_NAME("invalid_flags"));
+ if (mz != NULL) {
+ printf("Zone with invalid flags has been reserved\n");
+ return -1;
+ }
+
+ mz = rte_memzone_reserve(TEST_MEMZONE_NAME("invalid_flags"),
+ 100, SOCKET_ID_ANY, RTE_MEMZONE_IOVA_CONTIG << 1);
+ if (mz != NULL) {
+ printf("Zone with invalid flags has been reserved\n");
+ return -1;
+ }
+ return 0;
+}
+
static int
test_memzone_reserving_zone_size_bigger_than_the_maximum(void)
{
struct rte_malloc_socket_stats stats;
size_t len, overhead;
- rte_malloc_get_socket_stats(socket_id, &stats);
+ if (rte_malloc_get_socket_stats(socket_id, &stats) < 0)
+ return 0;
len = stats.greatest_free_size;
overhead = MALLOC_ELEM_OVERHEAD;
}
if (mz->len != maxlen) {
- printf("Memzone reserve with 0 size did not return bigest block\n");
+ printf("Memzone reserve with 0 size did not return biggest block\n");
printf("Expected size = %zu, actual size = %zu\n",
maxlen, mz->len);
rte_dump_physmem_layout(stdout);
if (mz->len < minlen || mz->len > maxlen) {
printf("Memzone reserve with 0 size and alignment %u did not return"
- " bigest block\n", align);
+ " biggest block\n", align);
printf("Expected size = %zu-%zu, actual size = %zu\n",
minlen, maxlen, mz->len);
rte_dump_physmem_layout(stdout);
return 0;
}
+static int test_memzones_left;
+static int memzone_walk_cnt;
+static void memzone_walk_clb(const struct rte_memzone *mz,
+ void *arg __rte_unused)
+{
+ memzone_walk_cnt++;
+ if (!strncmp(TEST_MEMZONE_NAME(""), mz->name, RTE_MEMZONE_NAMESIZE))
+ test_memzones_left++;
+}
+
static int
test_memzone_basic(void)
{
const struct rte_memzone *memzone4;
const struct rte_memzone *mz;
int memzone_cnt_after, memzone_cnt_expected;
- int memzone_cnt_before =
- rte_eal_get_configuration()->mem_config->memzones.count;
+ int memzone_cnt_before;
+
+ memzone_walk_cnt = 0;
+ test_memzones_left = 0;
+ rte_memzone_walk(memzone_walk_clb, NULL);
+ memzone_cnt_before = memzone_walk_cnt;
memzone1 = rte_memzone_reserve(TEST_MEMZONE_NAME("testzone1"), 100,
SOCKET_ID_ANY, 0);
(memzone1 != NULL) + (memzone2 != NULL) +
(memzone3 != NULL) + (memzone4 != NULL);
- memzone_cnt_after =
- rte_eal_get_configuration()->mem_config->memzones.count;
+ memzone_walk_cnt = 0;
+ test_memzones_left = 0;
+ rte_memzone_walk(memzone_walk_clb, NULL);
+ memzone_cnt_after = memzone_walk_cnt;
if (memzone_cnt_after != memzone_cnt_expected)
return -1;
if (mz != memzone1)
return -1;
- printf("test duplcate zone name\n");
+ printf("test duplicate zone name\n");
mz = rte_memzone_reserve(TEST_MEMZONE_NAME("testzone1"), 100,
SOCKET_ID_ANY, 0);
if (mz != NULL)
return -1;
}
- memzone_cnt_after =
- rte_eal_get_configuration()->mem_config->memzones.count;
+ memzone_walk_cnt = 0;
+ test_memzones_left = 0;
+ rte_memzone_walk(memzone_walk_clb, NULL);
+ memzone_cnt_after = memzone_walk_cnt;
if (memzone_cnt_after != memzone_cnt_before)
return -1;
return 0;
}
-static int test_memzones_left;
-static int memzone_walk_cnt;
-static void memzone_walk_clb(const struct rte_memzone *mz,
- void *arg __rte_unused)
-{
- memzone_walk_cnt++;
- if (!strncmp(TEST_MEMZONE_NAME(""), mz->name, RTE_MEMZONE_NAMESIZE))
- test_memzones_left++;
-}
-
static int
test_memzone(void)
{
/* take note of how many memzones were allocated before running */
- int memzone_cnt =
- rte_eal_get_configuration()->mem_config->memzones.count;
+ int memzone_cnt;
+
+ memzone_walk_cnt = 0;
+ test_memzones_left = 0;
+ rte_memzone_walk(memzone_walk_clb, NULL);
+ memzone_cnt = memzone_walk_cnt;
printf("test basic memzone API\n");
if (test_memzone_basic() < 0)
if (test_memzone_invalid_alignment() < 0)
return -1;
+ printf("test invalid flags for memzone_reserve\n");
+ if (test_memzone_invalid_flags() < 0)
+ return -1;
+
printf("test reserving the largest size memzone possible\n");
if (test_memzone_reserve_max() < 0)
return -1;