From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by dpdk.org (Postfix) with ESMTP id 5F0CEF92A for ; Thu, 19 Apr 2018 19:27:32 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E5529722ED; Thu, 19 Apr 2018 17:27:31 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-117-2.ams2.redhat.com [10.36.117.2]) by smtp.corp.redhat.com (Postfix) with ESMTP id 491DC215CDA7; Thu, 19 Apr 2018 17:27:27 +0000 (UTC) To: Arnon Warshavsky , 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 References: <1524117669-25729-1-git-send-email-arnon@qwilt.com> <1524117669-25729-10-git-send-email-arnon@qwilt.com> From: Kevin Traynor Organization: Red Hat Message-ID: Date: Thu, 19 Apr 2018 18:27:26 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <1524117669-25729-10-git-send-email-arnon@qwilt.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 19 Apr 2018 17:27:32 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 19 Apr 2018 17:27:32 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'ktraynor@redhat.com' RCPT:'' Subject: Re: [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: , X-List-Received-Date: Thu, 19 Apr 2018 17:27:32 -0000 On 04/19/2018 07:01 AM, Arnon Warshavsky wrote: > 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) Lots of "!= 0"'s - you might gather by now that I don't like them :-) > + 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 * > { hmm, I'm wondering should void __rte_experimental rte_eth_dev_owner_delete change to return an int, now that there is a fail case and it is still experimental...? > 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); > >