From patchwork Thu Apr 19 06:01:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnon Warshavsky X-Patchwork-Id: 38458 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 363AD72FC; Thu, 19 Apr 2018 08:01:52 +0200 (CEST) Received: from mta.qwilt.com (mta.qwilt.com [52.9.191.255]) by dpdk.org (Postfix) with ESMTP id 8116C71B3 for ; Thu, 19 Apr 2018 08:01:43 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mta.qwilt.com (Postfix) with ESMTP id EA3548070A1; Thu, 19 Apr 2018 06:01:42 +0000 (UTC) X-Virus-Scanned: amavisd-new at qwilt.com Received: from mta.qwilt.com ([127.0.0.1]) by localhost (mta.qwilt.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1OgL5Z0JHKBX; Thu, 19 Apr 2018 06:01:42 +0000 (UTC) Received: from rd01.it.qwilt.com.qwilt.com (80.179.204.39.cable.012.net.il [80.179.204.39]) by mta.qwilt.com (Postfix) with ESMTPSA id 221878070AE; Thu, 19 Apr 2018 06:01:39 +0000 (UTC) From: Arnon Warshavsky To: thomas@monjalon.net, anatoly.burakov@intel.com, wenzhuo.lu@intel.com, declan.doherty@intel.com, jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com, ferruh.yigit@intel.com Cc: dev@dpdk.org, arnon@qwilt.com Date: Thu, 19 Apr 2018 09:01:07 +0300 Message-Id: <1524117669-25729-10-git-send-email-arnon@qwilt.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1524117669-25729-1-git-send-email-arnon@qwilt.com> References: <1524117669-25729-1-git-send-email-arnon@qwilt.com> Subject: [dpdk-dev] [PATCH v4 09/11] eal: replace rte_panic instances in ethdev X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Local function to this file, changing from void to int is non-abi-breaking Signed-off-by: Arnon Warshavsky --- lib/librte_ether/rte_ethdev.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 7821a88..9c13827 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -194,7 +194,7 @@ enum { return port_id; } -static void +static int rte_eth_dev_shared_data_prepare(void) { const unsigned flags = 0; @@ -210,8 +210,12 @@ enum { rte_socket_id(), flags); } else mz = rte_memzone_lookup(MZ_RTE_ETH_DEV_DATA); - if (mz == NULL) - rte_panic("Cannot allocate ethdev shared data\n"); + if (mz == NULL) { + rte_spinlock_unlock(&rte_eth_shared_data_lock); + RTE_LOG(CRIT, EAL, "%s(): Cannot allocate ethdev shared data\n", + __func__); + return -1; + } rte_eth_dev_shared_data = mz->addr; if (rte_eal_process_type() == RTE_PROC_PRIMARY) { @@ -224,6 +228,8 @@ enum { } rte_spinlock_unlock(&rte_eth_shared_data_lock); + + return 0; } struct rte_eth_dev * @@ -274,7 +280,8 @@ struct rte_eth_dev * uint16_t port_id; struct rte_eth_dev *eth_dev = NULL; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return NULL; /* Synchronize port creation between primary and secondary threads. */ rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -317,7 +324,8 @@ struct rte_eth_dev * uint16_t i; struct rte_eth_dev *eth_dev = NULL; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return NULL; /* Synchronize port attachment to primary port creation and release. */ rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -345,7 +353,8 @@ struct rte_eth_dev * if (eth_dev == NULL) return -EINVAL; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return -1; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -399,7 +408,8 @@ struct rte_eth_dev * int __rte_experimental rte_eth_dev_owner_new(uint64_t *owner_id) { - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return -1; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -450,7 +460,8 @@ struct rte_eth_dev * { int ret; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return -1; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -467,7 +478,8 @@ struct rte_eth_dev * {.id = RTE_ETH_DEV_NO_OWNER, .name = ""}; int ret; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return -1; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -482,7 +494,8 @@ struct rte_eth_dev * { uint16_t port_id; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock); @@ -502,7 +515,8 @@ struct rte_eth_dev * { int ret = 0; - rte_eth_dev_shared_data_prepare(); + if (rte_eth_dev_shared_data_prepare() != 0) + return -1; rte_spinlock_lock(&rte_eth_dev_shared_data->ownership_lock);