From 5ae0d39d4a529f43dc97a0ed11c62fa6b237a0db Mon Sep 17 00:00:00 2001 From: Fady Bader Date: Tue, 11 Aug 2020 09:24:23 +0300 Subject: [PATCH] telemetry: build stubs on Windows Telemetry didn't compile under Windows. Empty stubs are arranged, waiting for a proper implementation. Signed-off-by: Fady Bader Acked-by: Narcisa Vasile Acked-by: Dmitry Kozlyuk Acked-by: Ranjit Menon Signed-off-by: Thomas Monjalon --- lib/librte_telemetry/rte_telemetry.h | 1 + lib/librte_telemetry/telemetry.c | 22 ++++++++++++++++++++++ lib/librte_telemetry/telemetry_legacy.c | 10 ++++++++++ lib/meson.build | 1 + 4 files changed, 34 insertions(+) diff --git a/lib/librte_telemetry/rte_telemetry.h b/lib/librte_telemetry/rte_telemetry.h index d13010b8fb..deac2e71ca 100644 --- a/lib/librte_telemetry/rte_telemetry.h +++ b/lib/librte_telemetry/rte_telemetry.h @@ -3,6 +3,7 @@ */ #include +#include #include #ifndef _RTE_TELEMETRY_H_ diff --git a/lib/librte_telemetry/telemetry.c b/lib/librte_telemetry/telemetry.c index 0252282735..51e7ceeb1b 100644 --- a/lib/librte_telemetry/telemetry.c +++ b/lib/librte_telemetry/telemetry.c @@ -2,11 +2,13 @@ * Copyright(c) 2020 Intel Corporation */ +#ifndef RTE_EXEC_ENV_WINDOWS #include #include #include #include #include +#endif /* !RTE_EXEC_ENV_WINDOWS */ /* we won't link against libbsd, so just always use DPDKs-specific strlcpy */ #undef RTE_USE_LIBBSD @@ -25,8 +27,10 @@ #define MAX_OUTPUT_LEN (1024 * 16) #define MAX_CONNECTIONS 10 +#ifndef RTE_EXEC_ENV_WINDOWS static void * client_handler(void *socket); +#endif /* !RTE_EXEC_ENV_WINDOWS */ struct cmd_callback { char cmd[MAX_CMD_LEN]; @@ -34,6 +38,7 @@ struct cmd_callback { char help[MAX_HELP_LEN]; }; +#ifndef RTE_EXEC_ENV_WINDOWS struct socket { int sock; char path[sizeof(((struct sockaddr_un *)0)->sun_path)]; @@ -42,13 +47,16 @@ struct socket { }; static struct socket v2_socket; /* socket for v2 telemetry */ static struct socket v1_socket; /* socket for v1 telemetry */ +#endif /* !RTE_EXEC_ENV_WINDOWS */ static char telemetry_log_error[1024]; /* Will contain error on init failure */ /* list of command callbacks, with one command registered by default */ static struct cmd_callback callbacks[TELEMETRY_MAX_CALLBACKS]; static int num_callbacks; /* How many commands are registered */ /* Used when accessing or modifying list of command callbacks */ static rte_spinlock_t callback_sl = RTE_SPINLOCK_INITIALIZER; +#ifndef RTE_EXEC_ENV_WINDOWS static uint16_t v2_clients; +#endif /* !RTE_EXEC_ENV_WINDOWS */ int rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help) @@ -78,6 +86,8 @@ rte_telemetry_register_cmd(const char *cmd, telemetry_cb fn, const char *help) return 0; } +#ifndef RTE_EXEC_ENV_WINDOWS + static int list_commands(const char *cmd __rte_unused, const char *params __rte_unused, struct rte_tel_data *d) @@ -412,10 +422,13 @@ telemetry_v2_init(const char *runtime_dir, rte_cpuset_t *cpuset) return 0; } +#endif /* !RTE_EXEC_ENV_WINDOWS */ + int32_t rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, const char **err_str) { +#ifndef RTE_EXEC_ENV_WINDOWS if (telemetry_v2_init(runtime_dir, cpuset) != 0) { *err_str = telemetry_log_error; return -1; @@ -423,5 +436,14 @@ rte_telemetry_init(const char *runtime_dir, rte_cpuset_t *cpuset, if (telemetry_legacy_init(runtime_dir, cpuset) != 0) { *err_str = telemetry_log_error; } +#else /* RTE_EXEC_ENV_WINDOWS */ + RTE_SET_USED(runtime_dir); + RTE_SET_USED(cpuset); + RTE_SET_USED(err_str); + + snprintf(telemetry_log_error, sizeof(telemetry_log_error), + "DPDK Telemetry is not supported on Windows."); +#endif /* RTE_EXEC_ENV_WINDOWS */ + return 0; } diff --git a/lib/librte_telemetry/telemetry_legacy.c b/lib/librte_telemetry/telemetry_legacy.c index a341fe4ebd..edd76ca359 100644 --- a/lib/librte_telemetry/telemetry_legacy.c +++ b/lib/librte_telemetry/telemetry_legacy.c @@ -2,10 +2,12 @@ * Copyright(c) 2020 Intel Corporation */ +#ifndef RTE_EXEC_ENV_WINDOWS #include #include #include #include +#endif /* !RTE_EXEC_ENV_WINDOWS */ /* we won't link against libbsd, so just always use DPDKs-specific strlcpy */ #undef RTE_USE_LIBBSD @@ -77,15 +79,18 @@ static int register_client(const char *cmd __rte_unused, const char *params, char *buffer __rte_unused, int buf_len __rte_unused) { +#ifndef RTE_EXEC_ENV_WINDOWS pthread_t th; char data[BUF_SIZE]; int fd; struct sockaddr_un addrs; +#endif /* !RTE_EXEC_ENV_WINDOWS */ if (!strchr(params, ':')) { fprintf(stderr, "Invalid data\n"); return -1; } +#ifndef RTE_EXEC_ENV_WINDOWS strlcpy(data, strchr(params, ':'), sizeof(data)); memcpy(data, &data[strlen(":\"")], strlen(data)); if (!strchr(data, '\"')) { @@ -109,9 +114,12 @@ register_client(const char *cmd __rte_unused, const char *params, } pthread_create(&th, NULL, &legacy_client_handler, (void *)(uintptr_t)fd); +#endif /* !RTE_EXEC_ENV_WINDOWS */ return 0; } +#ifndef RTE_EXEC_ENV_WINDOWS + static int send_error_response(int s, int err) { @@ -239,3 +247,5 @@ legacy_client_handler(void *sock_id) close(s); return NULL; } + +#endif /* !RTE_EXEC_ENV_WINDOWS */ diff --git a/lib/meson.build b/lib/meson.build index 283ee6c505..eb0cd9090a 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -38,6 +38,7 @@ libraries = [ if is_windows libraries = [ 'kvargs', + 'telemetry', 'eal', 'ring', 'mempool', 'mbuf', 'net', 'pci', -- 2.20.1