@@ -178,6 +178,7 @@ fast_parallel_test_names = [
'sched_autotest',
'spinlock_autotest',
'stack_autotest',
+ 'stack_nb_autotest',
'string_autotest',
'table_autotest',
'tailq_autotest',
@@ -243,6 +244,7 @@ perf_test_names = [
'ring_pmd_perf_autotest',
'pmd_perf_autotest',
'stack_perf_autotest',
+ 'stack_nb_perf_autotest',
]
# All test cases in driver_test_names list are non-parallel
@@ -97,7 +97,7 @@ test_stack_push_pop(struct rte_stack *s, void **obj_table, unsigned int bulk_sz)
}
static int
-test_stack_basic(void)
+test_stack_basic(uint32_t flags)
{
struct rte_stack *s = NULL;
void **obj_table = NULL;
@@ -113,7 +113,7 @@ test_stack_basic(void)
for (i = 0; i < STACK_SIZE; i++)
obj_table[i] = (void *)(uintptr_t)i;
- s = rte_stack_create(__func__, STACK_SIZE, rte_socket_id(), 0);
+ s = rte_stack_create(__func__, STACK_SIZE, rte_socket_id(), flags);
if (s == NULL) {
printf("[%s():%u] failed to create a stack\n",
__func__, __LINE__);
@@ -177,18 +177,18 @@ test_stack_basic(void)
}
static int
-test_stack_name_reuse(void)
+test_stack_name_reuse(uint32_t flags)
{
struct rte_stack *s[2];
- s[0] = rte_stack_create("test", STACK_SIZE, rte_socket_id(), 0);
+ s[0] = rte_stack_create("test", STACK_SIZE, rte_socket_id(), flags);
if (s[0] == NULL) {
printf("[%s():%u] Failed to create a stack\n",
__func__, __LINE__);
return -1;
}
- s[1] = rte_stack_create("test", STACK_SIZE, rte_socket_id(), 0);
+ s[1] = rte_stack_create("test", STACK_SIZE, rte_socket_id(), flags);
if (s[1] != NULL) {
printf("[%s():%u] Failed to detect re-used name\n",
__func__, __LINE__);
@@ -201,7 +201,7 @@ test_stack_name_reuse(void)
}
static int
-test_stack_name_length(void)
+test_stack_name_length(uint32_t flags)
{
char name[RTE_STACK_NAMESIZE + 1];
struct rte_stack *s;
@@ -209,7 +209,7 @@ test_stack_name_length(void)
memset(name, 's', sizeof(name));
name[RTE_STACK_NAMESIZE] = '\0';
- s = rte_stack_create(name, STACK_SIZE, rte_socket_id(), 0);
+ s = rte_stack_create(name, STACK_SIZE, rte_socket_id(), flags);
if (s != NULL) {
printf("[%s():%u] Failed to prevent long name\n",
__func__, __LINE__);
@@ -328,7 +328,7 @@ stack_thread_push_pop(void *args)
}
static int
-test_stack_multithreaded(void)
+test_stack_multithreaded(uint32_t flags)
{
struct test_args *args;
unsigned int lcore_id;
@@ -349,7 +349,7 @@ test_stack_multithreaded(void)
return -1;
}
- s = rte_stack_create("test", STACK_SIZE, rte_socket_id(), 0);
+ s = rte_stack_create("test", STACK_SIZE, rte_socket_id(), flags);
if (s == NULL) {
printf("[%s():%u] Failed to create a stack\n",
__func__, __LINE__);
@@ -384,9 +384,9 @@ test_stack_multithreaded(void)
}
static int
-test_stack(void)
+__test_stack(uint32_t flags)
{
- if (test_stack_basic() < 0)
+ if (test_stack_basic(flags) < 0)
return -1;
if (test_lookup_null() < 0)
@@ -395,16 +395,29 @@ test_stack(void)
if (test_free_null() < 0)
return -1;
- if (test_stack_name_reuse() < 0)
+ if (test_stack_name_reuse(flags) < 0)
return -1;
- if (test_stack_name_length() < 0)
+ if (test_stack_name_length(flags) < 0)
return -1;
- if (test_stack_multithreaded() < 0)
+ if (test_stack_multithreaded(flags) < 0)
return -1;
return 0;
}
+static int
+test_stack(void)
+{
+ return __test_stack(0);
+}
+
+static int
+test_lf_stack(void)
+{
+ return __test_stack(RTE_STACK_F_LF);
+}
+
REGISTER_TEST_COMMAND(stack_autotest, test_stack);
+REGISTER_TEST_COMMAND(stack_lf_autotest, test_lf_stack);
@@ -297,14 +297,14 @@ test_bulk_push_pop(struct rte_stack *s)
}
static int
-test_stack_perf(void)
+__test_stack_perf(uint32_t flags)
{
struct lcore_pair cores;
struct rte_stack *s;
rte_atomic32_init(&lcore_barrier);
- s = rte_stack_create(STACK_NAME, STACK_SIZE, rte_socket_id(), 0);
+ s = rte_stack_create(STACK_NAME, STACK_SIZE, rte_socket_id(), flags);
if (s == NULL) {
printf("[%s():%u] failed to create a stack\n",
__func__, __LINE__);
@@ -340,4 +340,17 @@ test_stack_perf(void)
return 0;
}
+static int
+test_stack_perf(void)
+{
+ return __test_stack_perf(0);
+}
+
+static int
+test_lf_stack_perf(void)
+{
+ return __test_stack_perf(RTE_STACK_F_LF);
+}
+
REGISTER_TEST_COMMAND(stack_perf_autotest, test_stack_perf);
+REGISTER_TEST_COMMAND(stack_lf_perf_autotest, test_lf_stack_perf);