From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 67EDA12A8 for ; Fri, 27 Jan 2017 17:47:44 +0100 (CET) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP; 27 Jan 2017 08:47:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,296,1477983600"; d="scan'208";a="57994422" Received: from bricha3-mobl3.ger.corp.intel.com ([10.252.2.47]) by orsmga005.jf.intel.com with SMTP; 27 Jan 2017 08:47:40 -0800 Received: by (sSMTP sendmail emulation); Fri, 27 Jan 2017 16:47:40 +0000 Date: Fri, 27 Jan 2017 16:47:40 +0000 From: Bruce Richardson To: Stephen Hemminger Cc: Aaron Conole , dev@dpdk.org Message-ID: <20170127164739.GB82692@bricha3-MOBL3.ger.corp.intel.com> References: <1485529023-5486-1-git-send-email-aconole@redhat.com> <1485529023-5486-26-git-send-email-aconole@redhat.com> <20170127083346.2bf55801@xeon-e3> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170127083346.2bf55801@xeon-e3> Organization: Intel Research and =?iso-8859-1?Q?De=ACvel?= =?iso-8859-1?Q?opment?= Ireland Ltd. User-Agent: Mutt/1.7.1 (2016-10-04) Subject: Re: [dpdk-dev] [PATCH 25/25] rte_eal_init: add info about rte_errno codes 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: Fri, 27 Jan 2017 16:47:44 -0000 On Fri, Jan 27, 2017 at 08:33:46AM -0800, Stephen Hemminger wrote: > On Fri, 27 Jan 2017 09:57:03 -0500 > Aaron Conole wrote: > > > diff --git a/lib/librte_eal/common/include/rte_eal.h b/lib/librte_eal/common/include/rte_eal.h > > index 03fee50..46e427f 100644 > > --- a/lib/librte_eal/common/include/rte_eal.h > > +++ b/lib/librte_eal/common/include/rte_eal.h > > @@ -159,7 +159,29 @@ int rte_eal_iopl_init(void); > > * function call and should not be further interpreted by the > > * application. The EAL does not take any ownership of the memory used > > * for either the argv array, or its members. > > - * - On failure, a negative error value. > > + * - On failure, -1 and rte_errno is set to a value indicating the cause > > + * for failure. > > + * > > + * The error codes returned via rte_errno: > > + * EACCES indicates a permissions issue. > > + * > > + * EAGAIN indicates either a bus or system resource was not available, > > + * try again. > > + * > > + * EALREADY indicates that the rte_eal_init function has already been > > + * called, and cannot be called again. > > + * > > + * EINVAL indicates invalid parameters were passed as argv/argc. > > + * > > + * EIO indicates failure to setup the logging handlers. This is usually > > + * caused by an out-of-memory condition. > > + * > > + * ENODEV indicates memory setup issues. > > + * > > + * ENOTSUP indicates that the EAL cannot initialize on this system. > > + * > > + * EUNATCH indicates that the PCI bus is either not present, or is not > > + * readable by the eal. > > */ > > int rte_eal_init(int argc, char **argv); > > Why use rte_errno? > Most DPDK calls just return negative value on error which corresponds to error number. > Are you trying to keep ABI compatibility? Doesn't make sense because before all these > errors were panic's no working application is going to care. Either will work, but I actually prefer this way. I view using rte_errno to be better as it can work in just about all cases, including with functions which return pointers. This allows you to have a standard method across all functions for returning error codes, and it only requires a single sentinal value to indicate error, rather than using a whole range of values. /Bruce