From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 17F5D8D96 for ; Tue, 10 Nov 2015 11:32:30 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP; 10 Nov 2015 02:32:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,270,1444719600"; d="scan'208";a="682046049" Received: from bricha3-mobl3.ger.corp.intel.com ([10.237.208.62]) by orsmga003.jf.intel.com with SMTP; 10 Nov 2015 02:32:27 -0800 Received: by (sSMTP sendmail emulation); Tue, 10 Nov 2015 10:32:26 +0025 Date: Tue, 10 Nov 2015 10:32:26 +0000 From: Bruce Richardson To: Declan Doherty Message-ID: <20151110103226.GB29836@bricha3-MOBL3> References: <1446572746-26207-1-git-send-email-declan.doherty@intel.com> <1447101259-18972-1-git-send-email-declan.doherty@intel.com> <1447101259-18972-3-git-send-email-declan.doherty@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1447101259-18972-3-git-send-email-declan.doherty@intel.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v5 02/10] ethdev: make error checking macros public X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Nov 2015 10:32:31 -0000 On Mon, Nov 09, 2015 at 08:34:11PM +0000, Declan Doherty wrote: > Move the function pointer and port id checking macros to rte_ethdev and > rte_dev header files, so that they can be used in the static inline > functions there. Also replace the RTE_LOG call within > RTE_PMD_DEBUG_TRACE so this macro can be built with the -pedantic flag > > Signed-off-by: Declan Doherty Thanks, Declan. I'll rebase my other patchset that was very similar to this on top of this patch and your previous one. Acked-by: Bruce Richardson > --- > lib/librte_eal/common/include/rte_dev.h | 52 +++++++++++++++++++++++++++++++ > lib/librte_ether/rte_ethdev.c | 54 --------------------------------- > lib/librte_ether/rte_ethdev.h | 26 ++++++++++++++++ > 3 files changed, 78 insertions(+), 54 deletions(-) > > diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h > index f601d21..fd09b3d 100644 > --- a/lib/librte_eal/common/include/rte_dev.h > +++ b/lib/librte_eal/common/include/rte_dev.h > @@ -46,8 +46,60 @@ > extern "C" { > #endif > > +#include > #include > > +#include > + > +__attribute__((format(printf, 2, 0))) > +static inline void > +rte_pmd_debug_trace(const char *func_name, const char *fmt, ...) > +{ > + va_list ap; > + > + va_start(ap, fmt); > + char buffer[vsnprintf(NULL, 0, fmt, ap)]; > + > + va_end(ap); > + > + va_start(ap, fmt); > + vsnprintf(buffer, sizeof(buffer), fmt, ap); > + va_end(ap); > + > + rte_log(RTE_LOG_ERR, RTE_LOGTYPE_PMD, "%s: %s", func_name, buffer); > +} > + > +/* Macros for checking for restricting functions to primary instance only */ > +#define RTE_PROC_PRIMARY_OR_ERR_RET(retval) do { \ > + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ > + RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ > + return retval; \ > + } \ > +} while (0) > + > +#define RTE_PROC_PRIMARY_OR_RET() do { \ > + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ > + RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ > + return; \ > + } \ > +} while (0) > + > +/* Macros to check for invalid function pointers */ > +#define RTE_FUNC_PTR_OR_ERR_RET(func, retval) do { \ > + if ((func) == NULL) { \ > + RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ > + return retval; \ > + } \ > +} while (0) > + > +#define RTE_FUNC_PTR_OR_RET(func) do { \ > + if ((func) == NULL) { \ > + RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ > + return; \ > + } \ > +} while (0) > + > + > /** Double linked list of device drivers. */ > TAILQ_HEAD(rte_driver_list, rte_driver); > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 7387f65..d3c8aba 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -69,60 +69,6 @@ > #include "rte_ether.h" > #include "rte_ethdev.h" > > -#ifdef RTE_LIBRTE_ETHDEV_DEBUG > -#define RTE_PMD_DEBUG_TRACE(fmt, args...) do {do { \ > - RTE_LOG(ERR, PMD, "%s: " fmt, __func__, ## args); \ > - } while (0) > -#else > -#define RTE_PMD_DEBUG_TRACE(fmt, args...) > -#endif > - > -/* Macros for checking for restricting functions to primary instance only */ > -#define RTE_PROC_PRIMARY_OR_ERR_RET(retval) do { \ > - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ > - RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ > - return (retval); \ > - } \ > -} while (0) > - > -#define RTE_PROC_PRIMARY_OR_RET() do { \ > - if (rte_eal_process_type() != RTE_PROC_PRIMARY) { \ > - RTE_PMD_DEBUG_TRACE("Cannot run in secondary processes\n"); \ > - return; \ > - } \ > -} while (0) > - > -/* Macros to check for invalid function pointers in dev_ops structure */ > -#define RTE_FUNC_PTR_OR_ERR_RET(func, retval) do { \ > - if ((func) == NULL) { \ > - RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ > - return (retval); \ > - } \ > -} while (0) > - > -#define RTE_FUNC_PTR_OR_RET(func) do { \ > - if ((func) == NULL) { \ > - RTE_PMD_DEBUG_TRACE("Function not supported\n"); \ > - return; \ > - } \ > -} while (0) > - > -/* Macros to check for valid port */ > -#define RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, retval) do { \ > - if (!rte_eth_dev_is_valid_port(port_id)) { \ > - RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); \ > - return retval; \ > - } \ > -} while (0) > - > -#define RTE_ETH_VALID_PORTID_OR_RET(port_id) do { \ > - if (!rte_eth_dev_is_valid_port(port_id)) { \ > - RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); \ > - return; \ > - } \ > -} while (0) > - > - > static const char *MZ_RTE_ETH_DEV_DATA = "rte_eth_dev_data"; > struct rte_eth_dev rte_eth_devices[RTE_MAX_ETHPORTS]; > static struct rte_eth_dev_data *rte_eth_dev_data; > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > index 48a540d..9b07a0b 100644 > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -172,6 +172,8 @@ extern "C" { > > #include > > +#include > + > /* Use this macro to check if LRO API is supported */ > #define RTE_ETHDEV_HAS_LRO_SUPPORT > > @@ -931,6 +933,30 @@ struct rte_eth_dev_callback; > /** @internal Structure to keep track of registered callbacks */ > TAILQ_HEAD(rte_eth_dev_cb_list, rte_eth_dev_callback); > > + > +#ifdef RTE_LIBRTE_ETHDEV_DEBUG > +#define RTE_PMD_DEBUG_TRACE(...) \ > + rte_pmd_debug_trace(__func__, __VA_ARGS__) > +#else > +#define RTE_PMD_DEBUG_TRACE(fmt, args...) > +#endif > + > + > +/* Macros to check for valid port */ > +#define RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, retval) do { \ > + if (!rte_eth_dev_is_valid_port(port_id)) { \ > + RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); \ > + return retval; \ > + } \ > +} while (0) > + > +#define RTE_ETH_VALID_PORTID_OR_RET(port_id) do { \ > + if (!rte_eth_dev_is_valid_port(port_id)) { \ > + RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id); \ > + return; \ > + } \ > +} while (0) > + > /* > * Definitions of all functions exported by an Ethernet driver through the > * the generic structure of type *eth_dev_ops* supplied in the *rte_eth_dev* > -- > 2.4.3 >