From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A42DCA0613 for ; Wed, 28 Aug 2019 11:34:55 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 689701C131; Wed, 28 Aug 2019 11:34:55 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id ABC711C131 for ; Wed, 28 Aug 2019 11:34:53 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Aug 2019 02:34:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,440,1559545200"; d="scan'208";a="205297404" Received: from silpixa00389033.ir.intel.com ([10.237.222.118]) by fmsmga004.fm.intel.com with ESMTP; 28 Aug 2019 02:34:50 -0700 From: Flavia Musatescu To: stable@dpdk.org Cc: kevin.laatz@intel.com, ktraynor@redhat.com, Flavia Musatescu , Reshma Pattan Date: Wed, 28 Aug 2019 10:34:47 +0100 Message-Id: <1566984887-30591-1-git-send-email-flavia.musatescu@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <9fbbd98c-5a77-16e9-c526-c35c7fa9f80b@intel.com> References: <9fbbd98c-5a77-16e9-c526-c35c7fa9f80b@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] [PATCH v2] telemetry: fix build warnings seen when using gcc 9 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" [ upstream commit 5c0bdc32034b2464305ee55b5829a45451f221ef ] Suppress the unaligned packed member address warnings by extending the telemetry library build flags with -Wno-address-of-packed-member option, through the WERROR_FLAGS makefile variable. With this change additional warnings are turned on to be treated as errors, which causes the following build issues to be seen: - no previous prototype [-Werror=missing-prototypes] - initialization discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] - old-style function definition [-Werror=old-style-definition] - variable may be used before its value is set (when using icc compiler). Fixes: 0fe3a37924d4 ("telemetry: format json response when sending stats") Fixes: ee5ff0d3297e ("telemetry: add client feature and sockets") Fixes: 8877ac688b52 ("telemetry: introduce infrastructure") Fixes: 1b756087db93 ("telemetry: add parser for client socket messages") Fixes: fff6df7bf58e ("telemetry: fix using ports of different types") Fixes: 4080e46c8078 ("telemetry: support global metrics") Signed-off-by: Reshma Pattan Signed-off-by: Flavia Musatescu --- v2: Updated the commit message --- lib/librte_eal/common/include/rte_option.h | 2 +- lib/librte_telemetry/Makefile | 7 +---- lib/librte_telemetry/meson.build | 2 +- lib/librte_telemetry/rte_telemetry.c | 19 ++++++------ lib/librte_telemetry/rte_telemetry_internal.h | 3 ++ lib/librte_telemetry/rte_telemetry_parser.c | 7 +++-- lib/librte_telemetry/rte_telemetry_parser_test.c | 27 ++++++++-------- lib/librte_telemetry/rte_telemetry_parser_test.h | 39 ------------------------ 8 files changed, 33 insertions(+), 73 deletions(-) delete mode 100644 lib/librte_telemetry/rte_telemetry_parser_test.h diff --git a/lib/librte_eal/common/include/rte_option.h b/lib/librte_eal/common/include/rte_option.h index 8957b97..b8ad28b 100644 --- a/lib/librte_eal/common/include/rte_option.h +++ b/lib/librte_eal/common/include/rte_option.h @@ -34,7 +34,7 @@ typedef int (*rte_option_cb)(void); */ struct rte_option { TAILQ_ENTRY(rte_option) next; /**< Next entry in the list. */ - char *opt_str; /**< The option name. */ + const char *opt_str; /**< The option name. */ rte_option_cb cb; /**< Function called when option is used. */ int enabled; /**< Set when the option is used. */ }; diff --git a/lib/librte_telemetry/Makefile b/lib/librte_telemetry/Makefile index ef73a4e..1b3fe05 100644 --- a/lib/librte_telemetry/Makefile +++ b/lib/librte_telemetry/Makefile @@ -7,7 +7,7 @@ include $(RTE_SDK)/mk/rte.vars.mk LIB = librte_telemetry.a CFLAGS += -O3 -CFLAGS += -I$(SRCDIR) +CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR) CFLAGS += -DALLOW_EXPERIMENTAL_API LDLIBS += -lrte_eal -lrte_ethdev @@ -19,11 +19,6 @@ EXPORT_MAP := rte_telemetry_version.map LIBABIVER := 1 -ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) -CFLAGS_rte_telemetry.o += -Wno-address-of-packed-member -CFLAGS_rte_telemetry_parser.o += -Wno-address-of-packed-member -endif - # library source files SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) := rte_telemetry.c SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += rte_telemetry_parser.c diff --git a/lib/librte_telemetry/meson.build b/lib/librte_telemetry/meson.build index 9492f54..83c48dc 100644 --- a/lib/librte_telemetry/meson.build +++ b/lib/librte_telemetry/meson.build @@ -2,7 +2,7 @@ # Copyright(c) 2018 Intel Corporation sources = files('rte_telemetry.c', 'rte_telemetry_parser.c', 'rte_telemetry_parser_test.c') -headers = files('rte_telemetry.h', 'rte_telemetry_internal.h', 'rte_telemetry_parser.h', 'rte_telemetry_parser_test.h') +headers = files('rte_telemetry.h', 'rte_telemetry_internal.h', 'rte_telemetry_parser.h') deps += ['metrics', 'ethdev'] cflags += '-DALLOW_EXPERIMENTAL_API' diff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c index 7fb247e..b07ac0a 100644 --- a/lib/librte_telemetry/rte_telemetry.c +++ b/lib/librte_telemetry/rte_telemetry.c @@ -18,7 +18,6 @@ #include "rte_telemetry.h" #include "rte_telemetry_internal.h" #include "rte_telemetry_parser.h" -#include "rte_telemetry_parser_test.h" #include "rte_telemetry_socket_tests.h" #define BUF_SIZE 1024 @@ -32,13 +31,13 @@ static telemetry_impl *static_telemetry; struct telemetry_message_test { - char *test_name; + const char *test_name; int (*test_func_ptr)(struct telemetry_impl *telemetry, int fd); }; struct json_data { char *status_code; - char *data; + const char *data; int port; char *stat_name; int stat_value; @@ -137,7 +136,7 @@ rte_telemetry_update_metrics_ethdev(struct telemetry_impl *telemetry, return 0; } -int32_t +static int32_t rte_telemetry_write_to_socket(struct telemetry_impl *telemetry, const char *json_string) { @@ -661,7 +660,7 @@ rte_telemetry_initial_accept(struct telemetry_impl *telemetry) struct driver_index { const void *dev_ops; int reg_index; - } drv_idx[RTE_MAX_ETHPORTS]; + } drv_idx[RTE_MAX_ETHPORTS] = { {0} }; int nb_drv_idx = 0; uint16_t pid; int ret; @@ -911,7 +910,7 @@ rte_telemetry_create_socket(struct telemetry_impl *telemetry) } int32_t __rte_experimental -rte_telemetry_init() +rte_telemetry_init(void) { int ret; pthread_attr_t attr; @@ -1196,7 +1195,7 @@ rte_telemetry_parse_client_message(struct telemetry_impl *telemetry, char *buf) return -1; } -int32_t +static int32_t rte_telemetry_dummy_client_socket(const char *valid_client_path) { int sockfd = socket(AF_UNIX, SOCK_SEQPACKET, 0); @@ -1671,8 +1670,8 @@ rte_telemetry_json_contents_test(struct telemetry_impl *telemetry, int fd) int ret; char buf[BUF_SIZE]; int fail_count = 0; - char *status = "Status Error: Invalid Argument 404"; - char *data = "null"; + const char *status = "Status Error: Invalid Argument 404"; + const char *data = "null"; struct json_data *data_struct; const char *invalid_contents = "{\"action\":0,\"command\":" "\"ports_stats_values_by_name\",\"data\":{\"ports\"" @@ -1728,7 +1727,7 @@ rte_telemetry_json_empty_test(struct telemetry_impl *telemetry, int fd) char buf[BUF_SIZE]; int fail_count = 0; const char *status = "Status Error: Invalid Argument 404"; - char *data = "null"; + const char *data = "null"; struct json_data *data_struct; const char *empty_json = "{}"; int buffer_read = 0; diff --git a/lib/librte_telemetry/rte_telemetry_internal.h b/lib/librte_telemetry/rte_telemetry_internal.h index c298c39..39b2928 100644 --- a/lib/librte_telemetry/rte_telemetry_internal.h +++ b/lib/librte_telemetry/rte_telemetry_internal.h @@ -78,4 +78,7 @@ rte_telemetry_send_ports_stats_values(uint32_t *metric_ids, int num_metric_ids, int32_t rte_telemetry_socket_messaging_testing(int index, int socket); +int32_t +rte_telemetry_parser_test(struct telemetry_impl *telemetry); + #endif diff --git a/lib/librte_telemetry/rte_telemetry_parser.c b/lib/librte_telemetry/rte_telemetry_parser.c index e929702..07fe028 100644 --- a/lib/librte_telemetry/rte_telemetry_parser.c +++ b/lib/librte_telemetry/rte_telemetry_parser.c @@ -13,11 +13,12 @@ #include #include "rte_telemetry_internal.h" +#include "rte_telemetry_parser.h" typedef int (*command_func)(struct telemetry_impl *, int, json_t *); struct rte_telemetry_command { - char *text; + const char *text; command_func fn; } command; @@ -251,7 +252,7 @@ rte_telemetry_stat_names_to_ids(struct telemetry_impl *telemetry, return -1; } -int32_t +static int32_t rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, int action, json_t *data) { @@ -350,7 +351,7 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry, return -1; } -int32_t +static int32_t rte_telemetry_command_ports_stats_values_by_name(struct telemetry_impl *telemetry, int action, json_t *data) { diff --git a/lib/librte_telemetry/rte_telemetry_parser_test.c b/lib/librte_telemetry/rte_telemetry_parser_test.c index 5fe93fa..23ec7a7 100644 --- a/lib/librte_telemetry/rte_telemetry_parser_test.c +++ b/lib/librte_telemetry/rte_telemetry_parser_test.c @@ -16,6 +16,7 @@ #include #include "rte_telemetry_parser.h" +#include "rte_telemetry_internal.h" enum choices { INV_ACTION_VAL, @@ -31,7 +32,7 @@ enum choices { #define TEST_CLIENT "/var/run/dpdk/test_client" -int32_t +static int32_t rte_telemetry_create_test_socket(struct telemetry_impl *telemetry, const char *test_client_path) { @@ -82,7 +83,7 @@ rte_telemetry_create_test_socket(struct telemetry_impl *telemetry, return 0; } -int32_t +static int32_t rte_telemetry_format_port_stat_ids(int *port_ids, int num_port_ids, const char * const *stat_names, int num_stat_names, json_t **data) { @@ -165,8 +166,8 @@ rte_telemetry_format_port_stat_ids(int *port_ids, int num_port_ids, return -1; } -int32_t -rte_telemetry_create_json_request(int action, char *command, +static int32_t +rte_telemetry_create_json_request(int action, const char *command, const char *client_path, int *port_ids, int num_port_ids, const char * const *stat_names, int num_stat_names, char **request, int inv_choice) @@ -262,13 +263,13 @@ rte_telemetry_create_json_request(int action, char *command, return -1; } -int32_t +static int32_t rte_telemetry_send_get_ports_and_stats_request(struct telemetry_impl *telemetry, - int action_choice, char *command_choice, int inv_choice) + int action_choice, const char *command_choice, int inv_choice) { int ret; char *request; - char *client_path_data = NULL; + const char *client_path_data = NULL; if (telemetry == NULL) { TELEMETRY_LOG_ERR("Telemetry argument has not been initialised"); @@ -302,7 +303,7 @@ rte_telemetry_send_get_ports_and_stats_request(struct telemetry_impl *telemetry, return 0; } -int32_t +static int32_t rte_telemetry_send_get_ports_details_request(struct telemetry_impl *telemetry, int action_choice, int *port_ids, int num_port_ids, int inv_choice) { @@ -313,7 +314,7 @@ rte_telemetry_send_get_ports_details_request(struct telemetry_impl *telemetry, return -EINVAL; } - char *command = "ports_details"; + const char *command = "ports_details"; if (inv_choice == INV_ACTION_VAL) action_choice = -1; @@ -342,7 +343,7 @@ rte_telemetry_send_get_ports_details_request(struct telemetry_impl *telemetry, return 0; } -int32_t +static int32_t rte_telemetry_send_stats_values_by_name_request(struct telemetry_impl *telemetry, int action_choice, int *port_ids, int num_port_ids, const char * const *stat_names, int num_stat_names, @@ -350,7 +351,7 @@ rte_telemetry_send_stats_values_by_name_request(struct telemetry_impl { int ret; char *request; - char *command = "ports_stats_values_by_name"; + const char *command = "ports_stats_values_by_name"; if (telemetry == NULL) { TELEMETRY_LOG_ERR("Telemetry argument has not been initialised"); @@ -386,7 +387,7 @@ rte_telemetry_send_stats_values_by_name_request(struct telemetry_impl return 0; } -int32_t +static int32_t rte_telemetry_send_unreg_request(struct telemetry_impl *telemetry, int action_choice, const char *client_path, int inv_choice) { @@ -398,7 +399,7 @@ rte_telemetry_send_unreg_request(struct telemetry_impl *telemetry, return -EINVAL; } - char *command = "clients"; + const char *command = "clients"; if (inv_choice == INV_ACTION_VAL) action_choice = -1; diff --git a/lib/librte_telemetry/rte_telemetry_parser_test.h b/lib/librte_telemetry/rte_telemetry_parser_test.h deleted file mode 100644 index 6ada852..0000000 --- a/lib/librte_telemetry/rte_telemetry_parser_test.h +++ /dev/null @@ -1,39 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2018 Intel Corporation - */ - -#ifndef _RTE_TELEMETRY_PARSER_TEST_H_ -#define _RTE_TELEMETRY_PARSER_TEST_H_ - -int32_t -rte_telemetry_parser_test(struct telemetry_impl *telemetry); - -int32_t -rte_telemetry_format_port_stat_ids(int *port_ids, int num_port_ids, - const char * const stat_names, int num_stat_names, json_t **data); - -int32_t -rte_telemetry_create_json_request(int action, char *command, - const char *client_path, int *port_ids, int num_port_ids, - const char * const stat_names, int num_stat_names, char **request, - int inv_choice); - -int32_t -rte_telemetry_send_get_ports_and_stats_request(struct telemetry_impl *telemetry, - int action_choice, char *command_choice, int inv_choice); - -int32_t -rte_telemetry_send_get_ports_details_request(struct telemetry_impl *telemetry, - int action_choice, int *port_ids, int num_port_ids, int inv_choice); - -int32_t -rte_telemetry_send_stats_values_by_name_request(struct telemetry_impl - *telemetry, int action_choice, int *port_ids, int num_port_ids, - const char * const stat_names, int num_stat_names, - int inv_choice); - -int32_t -rte_telemetry_send_unreg_request(int action_choice, const char *client_path, - int inv_choice); - -#endif -- 2.7.4