#include <rte_devargs.h>
#include <rte_version.h>
#include <rte_vfio.h>
-#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
#include "eal_hugepages.h"
#include "eal_options.h"
#include "eal_memcfg.h"
+#include "eal_trace.h"
#define MEMSIZE_IF_NO_HUGE_PAGE (64ULL * 1024ULL * 1024ULL)
argvopt = argv;
optind = 1;
optreset = 1;
- opterr = 0;
while ((opt = getopt_long(argc, argvopt, eal_short_options,
eal_long_options, &option_index)) != EOF) {
- /*
- * getopt didn't recognise the option, lets parse the
- * registered options to see if the flag is valid
- */
+ /* getopt didn't recognise the option */
if (opt == '?') {
- ret = rte_option_parse(argv[optind-1]);
- if (ret == 0)
- continue;
-
eal_usage(prgname);
ret = -1;
goto out;
static int
-sync_func(__attribute__((unused)) void *arg)
+sync_func(__rte_unused void *arg)
{
return 0;
}
eal_reset_internal_config(&internal_config);
+ /* clone argv to report out later in telemetry */
+ eal_save_args(argc, argv);
+
/* set log level as early as possible */
eal_log_level_parse(argc, argv);
return -1;
}
+ if (eal_trace_init() < 0) {
+ rte_eal_init_alert("Cannot init trace");
+ rte_errno = EFAULT;
+ rte_atomic32_clear(&run_once);
+ return -1;
+ }
+
if (eal_option_device_parse()) {
rte_errno = ENODEV;
rte_atomic32_clear(&run_once);
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
+ if (!internal_config.no_telemetry) {
+ const char *error_str;
+ if (rte_telemetry_init(rte_eal_get_runtime_dir(),
+ &error_str) != 0) {
+ rte_eal_init_alert(error_str);
+ return -1;
+ }
+ }
eal_mcfg_complete();
- /* Call each registered callback, if enabled */
- rte_option_init();
-
return fctret;
}
{
rte_service_finalize();
rte_mp_channel_cleanup();
+ rte_trace_save();
+ eal_trace_fini();
eal_cleanup_config(&internal_config);
return 0;
}