[dpdk-dev] [PATCH v4 15/18] lib: add telemetry as eal dependency
Ciara Power
ciara.power at intel.com
Fri Apr 24 14:41:56 CEST 2020
This patch moves telemetry further down the build, and adds it as a
dependency for EAL. Telemetry V2 is now configured to build by default,
and the legacy support is built when the telemetry config flag is set.
Telemetry now has EAL flags, shown below:
"--telemetry" = Enables telemetry (this is default if no flags given)
"--no-telemetry" = Disables telemetry
When telemetry is enabled, it will attempt to open the new socket
version, and also the legacy support socket (this will depend on Jansson
external dependency and telemetry config flag, as before).
Signed-off-by: Ciara Power <ciara.power at intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
v2: Telemetry config flag now represents the legacy support being built,
and is disabled by default, as in the existing telemetry.
---
config/common_base | 2 +-
examples/l3fwd-power/Makefile | 6 +----
examples/l3fwd-power/main.c | 8 ++-----
examples/l3fwd-power/meson.build | 6 +----
lib/Makefile | 5 ++--
lib/librte_eal/common/eal_common_options.c | 9 ++++++++
lib/librte_eal/common/eal_internal_cfg.h | 1 +
lib/librte_eal/common/eal_options.h | 4 ++++
lib/librte_eal/freebsd/Makefile | 1 +
lib/librte_eal/freebsd/eal.c | 9 ++++++++
lib/librte_eal/freebsd/meson.build | 2 +-
lib/librte_eal/linux/Makefile | 1 +
lib/librte_eal/linux/eal.c | 9 ++++++++
lib/librte_eal/linux/meson.build | 2 +-
lib/librte_eal/meson.build | 5 +++-
lib/librte_ethdev/Makefile | 6 +----
lib/librte_ethdev/meson.build | 6 +----
lib/librte_ethdev/rte_ethdev.c | 6 -----
lib/librte_rawdev/Makefile | 6 +----
lib/librte_rawdev/meson.build | 4 +---
lib/librte_rawdev/rte_rawdev.c | 6 -----
lib/librte_telemetry/Makefile | 9 ++++----
lib/librte_telemetry/meson.build | 1 -
lib/librte_telemetry/rte_telemetry.h | 3 ++-
lib/librte_telemetry/telemetry.c | 27 ++++++----------------
lib/meson.build | 2 +-
mk/rte.app.mk | 5 +++-
27 files changed, 69 insertions(+), 82 deletions(-)
diff --git a/config/common_base b/config/common_base
index d26eebbba2..d68aaa1836 100644
--- a/config/common_base
+++ b/config/common_base
@@ -922,7 +922,7 @@ CONFIG_RTE_LIBRTE_BITRATE=y
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
#
-# Compile librte_telemetry
+# Compile librte_telemetry legacy support
#
CONFIG_RTE_LIBRTE_TELEMETRY=n
diff --git a/examples/l3fwd-power/Makefile b/examples/l3fwd-power/Makefile
index 531a1d81cb..852877c1f2 100644
--- a/examples/l3fwd-power/Makefile
+++ b/examples/l3fwd-power/Makefile
@@ -60,7 +60,7 @@ else
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lm
+LDLIBS += -lm -lrte_telemetry
# workaround for a gcc bug with noreturn attribute
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
@@ -68,10 +68,6 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
CFLAGS_main.o += -Wno-return-type
endif
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
include $(RTE_SDK)/mk/rte.extapp.mk
endif
endif
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index bfa72b3187..46f24e8eeb 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -46,9 +46,7 @@
#include <rte_spinlock.h>
#include <rte_power_empty_poll.h>
#include <rte_metrics.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "perf_core.h"
#include "main.h"
@@ -2123,7 +2121,7 @@ update_telemetry(__rte_unused struct rte_timer *tim,
if (ret < 0)
RTE_LOG(WARNING, POWER, "failed to update metrcis\n");
}
-#ifdef RTE_LIBRTE_TELEMETRY
+
static int
handle_app_stats(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -2139,7 +2137,7 @@ handle_app_stats(const char *cmd __rte_unused,
values[i]);
return 0;
}
-#endif
+
static void
telemetry_setup_timer(void)
{
@@ -2539,11 +2537,9 @@ main(int argc, char **argv)
rte_spinlock_init(&stats[lcore_id].telemetry_lock);
}
rte_timer_init(&telemetry_timer);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/l3fwd-power/stats",
handle_app_stats,
"Returns global power stats. Parameters: None");
-#endif
rte_eal_mp_remote_launch(main_telemetry_loop, NULL,
SKIP_MASTER);
}
diff --git a/examples/l3fwd-power/meson.build b/examples/l3fwd-power/meson.build
index e7c6be6477..4cd694710d 100644
--- a/examples/l3fwd-power/meson.build
+++ b/examples/l3fwd-power/meson.build
@@ -12,11 +12,7 @@ if not dpdk_conf.has('RTE_LIBRTE_POWER')
endif
allow_experimental_apis = true
-deps += ['power', 'timer', 'lpm', 'hash', 'metrics']
+deps += ['power', 'timer', 'lpm', 'hash', 'metrics', 'telemetry']
sources = files(
'main.c', 'perf_core.c'
)
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
diff --git a/lib/Makefile b/lib/Makefile
index 0f6fb65293..4b1d3a0097 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -4,8 +4,9 @@
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_LIBRTE_KVARGS) += librte_kvargs
+DIRS-y += librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal
-DEPDIRS-librte_eal := librte_kvargs
+DEPDIRS-librte_eal := librte_kvargs librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_PCI) += librte_pci
DEPDIRS-librte_pci := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_RING) += librte_ring
@@ -22,8 +23,6 @@ DIRS-$(CONFIG_RTE_LIBRTE_CFGFILE) += librte_cfgfile
DEPDIRS-librte_cfgfile := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline
DEPDIRS-librte_cmdline := librte_eal librte_net
-DIRS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += librte_telemetry
-DEPDIRS-librte_telemetry := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev
DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring
DEPDIRS-librte_ethdev += librte_mbuf
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 7e3a7df9c9..62c0855fd3 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -91,6 +91,8 @@ eal_long_options[] = {
{OPT_LEGACY_MEM, 0, NULL, OPT_LEGACY_MEM_NUM },
{OPT_SINGLE_FILE_SEGMENTS, 0, NULL, OPT_SINGLE_FILE_SEGMENTS_NUM},
{OPT_MATCH_ALLOCATIONS, 0, NULL, OPT_MATCH_ALLOCATIONS_NUM},
+ {OPT_TELEMETRY, 0, NULL, OPT_TELEMETRY_NUM },
+ {OPT_NO_TELEMETRY, 0, NULL, OPT_NO_TELEMETRY_NUM },
{0, 0, NULL, 0 }
};
@@ -1497,6 +1499,11 @@ eal_parse_common_option(int opt, const char *optarg,
return -1;
}
break;
+ case OPT_TELEMETRY_NUM:
+ break;
+ case OPT_NO_TELEMETRY_NUM:
+ conf->no_telemetry = 1;
+ break;
/* don't know what to do, leave this to caller */
default:
@@ -1763,6 +1770,8 @@ eal_common_usage(void)
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
" disable secondary process support\n"
" --"OPT_BASE_VIRTADDR" Base virtual address\n"
+ " --"OPT_TELEMETRY" Enable telemetry support (on by default)\n"
+ " --"OPT_NO_TELEMETRY" Disable telemetry support\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n"
" --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n"
diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h
index a42f349232..c650bc0814 100644
--- a/lib/librte_eal/common/eal_internal_cfg.h
+++ b/lib/librte_eal/common/eal_internal_cfg.h
@@ -82,6 +82,7 @@ struct internal_config {
rte_cpuset_t ctrl_cpuset; /**< cpuset for ctrl threads */
volatile unsigned int init_complete;
/**< indicates whether EAL has completed initialization */
+ unsigned int no_telemetry; /**< true to disable Telemetry */
};
extern struct internal_config internal_config; /**< Global EAL configuration. */
diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h
index 90ead1b7c0..238eb3e44e 100644
--- a/lib/librte_eal/common/eal_options.h
+++ b/lib/librte_eal/common/eal_options.h
@@ -77,6 +77,10 @@ enum {
OPT_IOVA_MODE_NUM,
#define OPT_MATCH_ALLOCATIONS "match-allocations"
OPT_MATCH_ALLOCATIONS_NUM,
+#define OPT_TELEMETRY "telemetry"
+ OPT_TELEMETRY_NUM,
+#define OPT_NO_TELEMETRY "no-telemetry"
+ OPT_NO_TELEMETRY_NUM,
OPT_LONG_MAX_NUM
};
diff --git a/lib/librte_eal/freebsd/Makefile b/lib/librte_eal/freebsd/Makefile
index a8400f20a9..e95728e740 100644
--- a/lib/librte_eal/freebsd/Makefile
+++ b/lib/librte_eal/freebsd/Makefile
@@ -18,6 +18,7 @@ LDLIBS += -lexecinfo
LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
EXPORT_MAP := ../rte_eal_version.map
diff --git a/lib/librte_eal/freebsd/eal.c b/lib/librte_eal/freebsd/eal.c
index 540b7d38c5..bc86dccc27 100644
--- a/lib/librte_eal/freebsd/eal.c
+++ b/lib/librte_eal/freebsd/eal.c
@@ -44,6 +44,7 @@
#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -960,6 +961,14 @@ rte_eal_init(int argc, char **argv)
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();
diff --git a/lib/librte_eal/freebsd/meson.build b/lib/librte_eal/freebsd/meson.build
index 22fc4e8074..e10fd8a16d 100644
--- a/lib/librte_eal/freebsd/meson.build
+++ b/lib/librte_eal/freebsd/meson.build
@@ -18,4 +18,4 @@ sources += files(
'eal_timer.c',
)
-deps += ['kvargs']
+deps += ['kvargs', 'telemetry']
diff --git a/lib/librte_eal/linux/Makefile b/lib/librte_eal/linux/Makefile
index a77eb17570..be57a6d076 100644
--- a/lib/librte_eal/linux/Makefile
+++ b/lib/librte_eal/linux/Makefile
@@ -19,6 +19,7 @@ LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrt
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y)
LDLIBS += -lnuma
endif
diff --git a/lib/librte_eal/linux/eal.c b/lib/librte_eal/linux/eal.c
index 937d867aa6..bb6d163a88 100644
--- a/lib/librte_eal/linux/eal.c
+++ b/lib/librte_eal/linux/eal.c
@@ -51,6 +51,7 @@
#include <malloc_heap.h>
#include <rte_vfio.h>
#include <rte_option.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -1298,6 +1299,14 @@ rte_eal_init(int argc, char **argv)
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();
diff --git a/lib/librte_eal/linux/meson.build b/lib/librte_eal/linux/meson.build
index ca4f4e9785..7742aa4759 100644
--- a/lib/librte_eal/linux/meson.build
+++ b/lib/librte_eal/linux/meson.build
@@ -21,7 +21,7 @@ sources += files(
'eal_vfio_mp_sync.c',
)
-deps += ['kvargs']
+deps += ['kvargs', 'telemetry']
if has_libnuma == 1
dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true)
endif
diff --git a/lib/librte_eal/meson.build b/lib/librte_eal/meson.build
index 0267c3b9d8..e301f45585 100644
--- a/lib/librte_eal/meson.build
+++ b/lib/librte_eal/meson.build
@@ -11,7 +11,10 @@ subdir(exec_env)
subdir(arch_subdir)
-deps += 'kvargs'
+deps += ['kvargs']
+if not is_windows
+ deps += ['telemetry']
+endif
if dpdk_conf.has('RTE_USE_LIBBSD')
ext_deps += libbsd
endif
diff --git a/lib/librte_ethdev/Makefile b/lib/librte_ethdev/Makefile
index 38d3d35bfe..47747150b2 100644
--- a/lib/librte_ethdev/Makefile
+++ b/lib/librte_ethdev/Makefile
@@ -11,7 +11,7 @@ LIB = librte_ethdev.a
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
LDLIBS += -lrte_net -lrte_eal -lrte_mempool -lrte_ring
-LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter
+LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter -lrte_telemetry
EXPORT_MAP := rte_ethdev_version.map
@@ -24,10 +24,6 @@ SRCS-y += rte_mtr.c
SRCS-y += ethdev_profile.c
SRCS-y += ethdev_trace_points.c
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
#
# Export include files
#
diff --git a/lib/librte_ethdev/meson.build b/lib/librte_ethdev/meson.build
index 6e0535ecfd..8fc24e8c8a 100644
--- a/lib/librte_ethdev/meson.build
+++ b/lib/librte_ethdev/meson.build
@@ -27,8 +27,4 @@ headers = files('rte_ethdev.h',
'rte_tm.h',
'rte_tm_driver.h')
-deps += ['net', 'kvargs', 'meter']
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
+deps += ['net', 'kvargs', 'meter', 'telemetry']
diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
index 4cfc6d1707..74e94feb0a 100644
--- a/lib/librte_ethdev/rte_ethdev.c
+++ b/lib/librte_ethdev/rte_ethdev.c
@@ -38,9 +38,7 @@
#include <rte_kvargs.h>
#include <rte_class.h>
#include <rte_ether.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "rte_ethdev_trace.h"
#include "rte_ethdev.h"
@@ -5202,7 +5200,6 @@ rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_da)
return result;
}
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_port_list(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -5295,14 +5292,12 @@ handle_port_link_status(const char *cmd __rte_unused,
"full-duplex" : "half-duplex");
return 0;
}
-#endif
RTE_INIT(ethdev_init_log)
{
rte_eth_dev_logtype = rte_log_register("lib.ethdev");
if (rte_eth_dev_logtype >= 0)
rte_log_set_level(rte_eth_dev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/ethdev/list", handle_port_list,
"Returns list of available ethdev ports. Takes no parameters");
rte_telemetry_register_cmd("/ethdev/xstats", handle_port_xstats,
@@ -5310,5 +5305,4 @@ RTE_INIT(ethdev_init_log)
rte_telemetry_register_cmd("/ethdev/link_status",
handle_port_link_status,
"Returns the link status for a port. Parameters: int port_id");
-#endif
}
diff --git a/lib/librte_rawdev/Makefile b/lib/librte_rawdev/Makefile
index 5d7c2a582d..99f5d2a471 100644
--- a/lib/librte_rawdev/Makefile
+++ b/lib/librte_rawdev/Makefile
@@ -9,11 +9,7 @@ LIB = librte_rawdev.a
# build flags
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lrte_eal
-
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
+LDLIBS += -lrte_eal -lrte_telemetry
# library source files
SRCS-y += rte_rawdev.c
diff --git a/lib/librte_rawdev/meson.build b/lib/librte_rawdev/meson.build
index 1f23d2a80c..30d363cd2d 100644
--- a/lib/librte_rawdev/meson.build
+++ b/lib/librte_rawdev/meson.build
@@ -4,6 +4,4 @@
sources = files('rte_rawdev.c')
headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h')
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
+deps += ['telemetry']
diff --git a/lib/librte_rawdev/rte_rawdev.c b/lib/librte_rawdev/rte_rawdev.c
index ee6c087b12..c332a76489 100644
--- a/lib/librte_rawdev/rte_rawdev.c
+++ b/lib/librte_rawdev/rte_rawdev.c
@@ -29,9 +29,7 @@
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_errno.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
-#endif
#include "rte_rawdev.h"
#include "rte_rawdev_pmd.h"
@@ -547,7 +545,6 @@ rte_rawdev_pmd_release(struct rte_rawdev *rawdev)
return 0;
}
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_dev_list(const char *cmd __rte_unused,
const char *params __rte_unused,
@@ -615,17 +612,14 @@ handle_dev_xstats(const char *cmd __rte_unused,
free(rawdev_xstats);
return 0;
}
-#endif
RTE_INIT(librawdev_init_log)
{
librawdev_logtype = rte_log_register("lib.rawdev");
if (librawdev_logtype >= 0)
rte_log_set_level(librawdev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/rawdev/list", handle_dev_list,
"Returns list of available rawdev ports. Takes no parameters");
rte_telemetry_register_cmd("/rawdev/xstats", handle_dev_xstats,
"Returns the xstats for a rawdev port. Parameters: int port_id");
-#endif
}
diff --git a/lib/librte_telemetry/Makefile b/lib/librte_telemetry/Makefile
index 0dce053aeb..29115ba792 100644
--- a/lib/librte_telemetry/Makefile
+++ b/lib/librte_telemetry/Makefile
@@ -13,17 +13,16 @@ CFLAGS += -I$(RTE_SDK)/lib/librte_eal/include
CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(ARCH_DIR)/include
CFLAGS += -pthread
-LDLIBS += -lrte_eal
LDLIBS += -lpthread
EXPORT_MAP := rte_telemetry_version.map
# library source files
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry.c
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry_data.c
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry_legacy.c
+SRCS-y += telemetry.c
+SRCS-y += telemetry_data.c
+SRCS-y += telemetry_legacy.c
# export include files
-SYMLINK-$(CONFIG_RTE_LIBRTE_TELEMETRY)-include := rte_telemetry.h
+SYMLINK-y-include := rte_telemetry.h
include $(RTE_SDK)/mk/rte.lib.mk
diff --git a/lib/librte_telemetry/meson.build b/lib/librte_telemetry/meson.build
index f0af11a4ce..719973ff92 100644
--- a/lib/librte_telemetry/meson.build
+++ b/lib/librte_telemetry/meson.build
@@ -6,4 +6,3 @@ includes = [global_inc]
sources = files('telemetry.c', 'telemetry_data.c', 'telemetry_legacy.c')
headers = files('rte_telemetry.h')
includes += include_directories('../librte_metrics')
-dpdk_app_link_libraries += ['telemetry']
diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h
index de99e83163..1965affba3 100644
--- a/lib/librte_telemetry/rte_telemetry.h
+++ b/lib/librte_telemetry/rte_telemetry.h
@@ -250,5 +250,6 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help);
*/
__rte_experimental
int
-rte_telemetry_init(void);
+rte_telemetry_init(const char *runtime_dir, const char **err_str);
+
#endif
diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c
index d82e03bb71..846bddc3eb 100644
--- a/lib/librte_telemetry/telemetry.c
+++ b/lib/librte_telemetry/telemetry.c
@@ -14,7 +14,6 @@
#include <rte_common.h>
#include <rte_spinlock.h>
#include <rte_version.h>
-#include <rte_option.h>
#include "rte_telemetry.h"
#include "telemetry_json.h"
@@ -398,28 +397,16 @@ telemetry_v2_init(const char *runtime_dir)
}
int32_t
-rte_telemetry_init(void)
+rte_telemetry_init(const char *runtime_dir, const char **err_str)
{
- const char *error_str;
- if (telemetry_v2_init(rte_eal_get_runtime_dir()) != 0) {
- error_str = telemetry_log_error;
- printf("Error initialising telemetry - %s", error_str);
+ if (telemetry_v2_init(runtime_dir) != 0) {
+ *err_str = telemetry_log_error;
+ printf("Error initialising telemetry - %s", *err_str);
return -1;
}
- if (telemetry_legacy_init(rte_eal_get_runtime_dir()) != 0) {
- error_str = telemetry_log_error;
- printf("No telemetry legacy support- %s", error_str);
+ if (telemetry_legacy_init(runtime_dir) != 0) {
+ *err_str = telemetry_log_error;
+ printf("No telemetry legacy support- %s", *err_str);
}
return 0;
}
-
-static struct rte_option option = {
- .name = "telemetry",
- .usage = "Enable telemetry backend",
- .cb = &rte_telemetry_init,
- .enabled = 0
-};
-
-RTE_INIT(telemetry_register_op) {
- rte_option_register(&option);
-}
diff --git a/lib/meson.build b/lib/meson.build
index 7118a795a3..cd247b059c 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -10,8 +10,8 @@
# core libs which are widely reused, so their deps are kept to a minimum.
libraries = [
'kvargs', # eal depends on kvargs
+ 'telemetry', # basic info querying capability about dpdk processes
'eal', # everything depends on eal
- 'telemetry',
'ring',
'rcu', # rcu depends on ring
'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index 6df5bc322a..943c0ac30c 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -52,6 +52,9 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL) += -lrte_acl
_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics
+ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
+_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -ljansson
+endif
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --no-whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats
_LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats
@@ -74,6 +77,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_HASH) += -lrte_hash
_LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member
_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost
_LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs
+_LDLIBS-y += -lrte_telemetry
_LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf
_LDLIBS-$(CONFIG_RTE_LIBRTE_NET) += -lrte_net
_LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lrte_ethdev
@@ -90,7 +94,6 @@ _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING) += -lrte_mempool_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2
_LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci
-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += -lrte_telemetry -ljansson
_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal
_LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline
_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder
--
2.17.1
More information about the dev
mailing list