test: clean up on exit

The test application didn't call rte_eal_cleanup() on exit, which
caused leftover hugepages and memory leaks when running secondary
processes. Fix this by calling rte_eal_cleanup() on exit.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
Tested-by: Reshma Pattan <reshma.pattan@intel.com>
This commit is contained in:
Anatoly Burakov 2018-05-31 17:14:02 +01:00 committed by Thomas Monjalon
parent 3bb0383889
commit 3f9e31d71d

View File

@ -84,22 +84,29 @@ main(int argc, char **argv)
int ret; int ret;
ret = rte_eal_init(argc, argv); ret = rte_eal_init(argc, argv);
if (ret < 0) if (ret < 0) {
return -1; ret = -1;
goto out;
}
#ifdef RTE_LIBRTE_TIMER #ifdef RTE_LIBRTE_TIMER
rte_timer_subsystem_init(); rte_timer_subsystem_init();
#endif #endif
if (commands_init() < 0) if (commands_init() < 0) {
return -1; ret = -1;
goto out;
}
argv += ret; argv += ret;
prgname = argv[0]; prgname = argv[0];
if ((recursive_call = getenv(RECURSIVE_ENV_VAR)) != NULL) recursive_call = getenv(RECURSIVE_ENV_VAR);
return do_recursive_call(); if (recursive_call != NULL) {
ret = do_recursive_call();
goto out;
}
#ifdef RTE_LIBEAL_USE_HPET #ifdef RTE_LIBEAL_USE_HPET
if (rte_eal_hpet_init(1) < 0) if (rte_eal_hpet_init(1) < 0)
@ -111,7 +118,8 @@ main(int argc, char **argv)
#ifdef RTE_LIBRTE_CMDLINE #ifdef RTE_LIBRTE_CMDLINE
cl = cmdline_stdin_new(main_ctx, "RTE>>"); cl = cmdline_stdin_new(main_ctx, "RTE>>");
if (cl == NULL) { if (cl == NULL) {
return -1; ret = -1;
goto out;
} }
char *dpdk_test = getenv("DPDK_TEST"); char *dpdk_test = getenv("DPDK_TEST");
@ -120,18 +128,23 @@ main(int argc, char **argv)
snprintf(buf, sizeof(buf), "%s\n", dpdk_test); snprintf(buf, sizeof(buf), "%s\n", dpdk_test);
if (cmdline_in(cl, buf, strlen(buf)) < 0) { if (cmdline_in(cl, buf, strlen(buf)) < 0) {
printf("error on cmdline input\n"); printf("error on cmdline input\n");
return -1; ret = -1;
goto out;
} }
cmdline_stdin_exit(cl); cmdline_stdin_exit(cl);
return last_test_result; ret = last_test_result;
goto out;
} }
/* if no DPDK_TEST env variable, go interactive */ /* if no DPDK_TEST env variable, go interactive */
cmdline_interact(cl); cmdline_interact(cl);
cmdline_stdin_exit(cl); cmdline_stdin_exit(cl);
#endif #endif
ret = 0;
return 0; out:
rte_eal_cleanup();
return ret;
} }