Currently, if there is no procfs mounted, test application will fail to run any multiprocess-related autotests (EAL flags etc.) without a clear explanation as to why this happens.
Add a check specifically for that condition, as well as add a general stringified error message to rte_panic. Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com> --- app/test/process.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/test/process.h b/app/test/process.h index 513bc9420..128ce4121 100644 --- a/app/test/process.h +++ b/app/test/process.h @@ -5,12 +5,16 @@ #ifndef _PROCESS_H_ #define _PROCESS_H_ +#include <errno.h> /* errno */ #include <limits.h> /* PATH_MAX */ #include <libgen.h> /* basename et al */ #include <stdlib.h> /* NULL */ +#include <string.h> /* strerror */ #include <unistd.h> /* readlink */ #include <sys/wait.h> +#include <rte_string_fns.h> /* strlcpy */ + #ifdef RTE_EXEC_ENV_FREEBSD #define self "curproc" #define exe "file" @@ -67,8 +71,15 @@ process_dup(const char *const argv[], int numargs, const char *env_value) /* set the environment variable */ if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0) rte_panic("Cannot export environment variable\n"); - if (execv("/proc/" self "/" exe, argv_cpy) < 0) - rte_panic("Cannot exec\n"); + + strlcpy(path, "/proc/" self "/" exe, sizeof(path)); + if (execv(path, argv_cpy) < 0) { + if (errno == ENOENT) { + printf("Could not find '%s', is procfs mounted?\n", + path); + } + rte_panic("Cannot exec: %s\n", strerror(errno)); + } } /* parent process does a wait */ #ifdef RTE_LIBRTE_PDUMP -- 2.17.1