From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnon Warshavsky Subject: [PATCH v3 11/13] eal: replace rte_panic instances in ethdev Date: Fri, 13 Apr 2018 21:30:42 +0300 Message-ID: <1523644244-17511-12-git-send-email-arnon@qwilt.com> References: <1523644244-17511-1-git-send-email-arnon@qwilt.com> Cc: dev@dpdk.org, arnon@qwilt.com 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 Return-path: Received: from mta.qwilt.com (mta.qwilt.com [52.9.191.255]) by dpdk.org (Postfix) with ESMTP id 3BDBE1B196 for ; Fri, 13 Apr 2018 20:31:20 +0200 (CEST) In-Reply-To: <1523644244-17511-1-git-send-email-arnon@qwilt.com> 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 2c74f7e..57e1e6b 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); -- 1.8.3.1