From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6438DA00C2; Wed, 8 Dec 2021 19:40:19 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DE4A34111B; Wed, 8 Dec 2021 19:40:18 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id CCF44410F3; Wed, 8 Dec 2021 19:40:16 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Subject: RE: [PATCH v1] gpudev: return EINVAL if invalid input pointer for free and unregister Date: Wed, 8 Dec 2021 19:40:10 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D86D4B@smartserver.smartshare.dk> In-Reply-To: <20211208173456.GB17852@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v1] gpudev: return EINVAL if invalid input pointer for free and unregister Thread-Index: AdfsWfAMBwEzo9HbTIOI8CmyN/PnjQACGSuA References: <20211118192802.23955-1-eagostini@nvidia.com> <20211201213749.GA5097@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> <3625450.hdfAi7Kttb@thomas> <98CBD80474FA8B44BF855DF32C47DC35D86D33@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86D34@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86D35@smartserver.smartshare.dk> <20211208173456.GB17852@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> From: =?iso-8859-1?Q?Morten_Br=F8rup?= To: "Tyler Retzlaff" Cc: "Ananyev, Konstantin" , "Thomas Monjalon" , "Richardson, Bruce" , , , "Andrew Rybchenko" , "David Marchand" , "Yigit, Ferruh" X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org > From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com] > Sent: Wednesday, 8 December 2021 18.35 >=20 > On Fri, Dec 03, 2021 at 11:37:10AM +0100, Morten Br=F8rup wrote: > > > From: Morten Br=F8rup [mailto:mb@smartsharesystems.com] > > > Sent: Thursday, 2 December 2021 14.56 > > > > > > > > > I disagree: Negative value does not mean failure. Only -1 means > > > failure. > > > > > > There is no -2 return value. There is no -EINVAL return value. > > > > > > Testing for (ret < 0) might confuse someone to think that other > values > > > than -1 could be returned as indication of failure, which is not > the > > > case when following the convention where the functions set errno > and > > > return -1 in case of failure. > > > > > > It would be different if following a convention where the = functions > > > return -errno in case of failure. In this case, testing (ret < 0) > would > > > be appropriate. > > > > > > So explicitly testing (ret =3D=3D -1) clarifies which of the two > > > conventions are relevant. > > > > > > > I tested it on Godbolt, and (ret < 0) produces slightly smaller code > than (ret =3D=3D -1) on x86-64: > > > > https://godbolt.org/z/3xME3jxq8 > > > > A binary test (Error or Data) uses 1 byte less, and a tristate test > (Error, Zero or Data) uses 3 byte less. > > > > Although there is no measurable performance difference for a single > instance of this kind of test, we should consider that this kind of > test appears many times in the code, so the saved bytes might add up = to > something slightly significant in the instruction cache. > > > > My opinion is not so strong anymore... perhaps we should prefer > performance over code readability, also in this case? > > >=20 > i would not expect many calls that return rte_errno to be made on the > hot path. most of the use of errno / rte_errno is control but it's = good > to have considered it. if i start seeing a lot of error handling in = hot > paths i ordinarily find a way to get rid of it through various > techniques. Tyler, I think you and I agree perfectly on this topic. -1 should be returned as error, and rte_errno should provide details. I'm only saying that comparing the return value with < 0 provides = marginally less instruction bytes than comparing it with =3D=3D -1, so = even though -1 is the canonical indication of error, the comparison = could be < 0 instead of =3D=3D -1 (if weighing performance higher than = code clarity).