summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorOlivier Matz <olivier.matz@6wind.com>2021-01-13 09:28:06 +0100
committerDavid Marchand <david.marchand@redhat.com>2021-01-15 16:32:19 +0100
commitde6aede17bd3abe51478f33131a4c41da83c42da (patch)
tree34821085e7436219bfccb0637ead3326cfff520c /lib
parentaab8be44974b32ba735905fa27dff43f02662b90 (diff)
service: propagate init error in EAL
Currently, when rte_service_init() fails at initialization, the application always gets a ENOEXEC error code. For example, with testpmd, this is displayed as: Cannot init EAL: Exec format error This error code does not describe the real issue. Instead, use the error code returned by the function. Fixes: e39824500825 ("service: initialize with EAL") Cc: stable@dpdk.org Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/librte_eal/freebsd/eal.c4
-rw-r--r--lib/librte_eal/linux/eal.c4
-rw-r--r--lib/librte_eal/windows/eal.c6
3 files changed, 8 insertions, 6 deletions
diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c
index d6ea023750..51478358c7 100644
--- a/lib/librte_eal/freebsd/eal.c
+++ b/lib/librte_eal/freebsd/eal.c
@@ -906,7 +906,7 @@ rte_eal_init(int argc, char **argv)
ret = rte_service_init();
if (ret) {
rte_eal_init_alert("rte_service_init() failed");
- rte_errno = ENOEXEC;
+ rte_errno = -ret;
return -1;
}
@@ -922,7 +922,7 @@ rte_eal_init(int argc, char **argv)
*/
ret = rte_service_start_with_defaults();
if (ret < 0 && ret != -ENOTSUP) {
- rte_errno = ENOEXEC;
+ rte_errno = -ret;
return -1;
}
diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c
index a4161be630..32b48c3de9 100644
--- a/lib/librte_eal/linux/eal.c
+++ b/lib/librte_eal/linux/eal.c
@@ -1273,7 +1273,7 @@ rte_eal_init(int argc, char **argv)
ret = rte_service_init();
if (ret) {
rte_eal_init_alert("rte_service_init() failed");
- rte_errno = ENOEXEC;
+ rte_errno = -ret;
return -1;
}
@@ -1295,7 +1295,7 @@ rte_eal_init(int argc, char **argv)
*/
ret = rte_service_start_with_defaults();
if (ret < 0 && ret != -ENOTSUP) {
- rte_errno = ENOEXEC;
+ rte_errno = -ret;
return -1;
}
diff --git a/lib/librte_eal/windows/eal.c b/lib/librte_eal/windows/eal.c
index 105549de1b..1e5f6576f0 100644
--- a/lib/librte_eal/windows/eal.c
+++ b/lib/librte_eal/windows/eal.c
@@ -264,6 +264,7 @@ rte_eal_init(int argc, char **argv)
const struct rte_config *config = rte_eal_get_configuration();
struct internal_config *internal_conf =
eal_get_internal_configuration();
+ int ret;
rte_eal_log_init(NULL, 0);
@@ -387,9 +388,10 @@ rte_eal_init(int argc, char **argv)
}
/* Initialize services so drivers can register services during probe. */
- if (rte_service_init()) {
+ ret = rte_service_init();
+ if (ret) {
rte_eal_init_alert("rte_service_init() failed");
- rte_errno = ENOEXEC;
+ rte_errno = -ret;
return -1;
}