From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 0ABE1594C for ; Wed, 16 Apr 2014 19:30:13 +0200 (CEST) Received: from uucp by smtp.tuxdriver.com with local-rmail (Exim 4.63) (envelope-from ) id 1WaTf2-0002Xd-Bk; Wed, 16 Apr 2014 13:30:12 -0400 Received: from linville-x1.hq.tuxdriver.com (localhost.localdomain [127.0.0.1]) by linville-x1.hq.tuxdriver.com (8.14.8/8.14.6) with ESMTP id s3GHFQdN010734; Wed, 16 Apr 2014 13:15:26 -0400 Received: (from linville@localhost) by linville-x1.hq.tuxdriver.com (8.14.8/8.14.8/Submit) id s3GHFQE2010733; Wed, 16 Apr 2014 13:15:26 -0400 Date: Wed, 16 Apr 2014 13:15:25 -0400 From: "John W. Linville" To: Olivier MATZ Message-ID: <20140416171525.GB3625@tuxdriver.com> References: <1397585169-14537-1-git-send-email-nhorman@tuxdriver.com> <1397585169-14537-4-git-send-email-nhorman@tuxdriver.com> <1462763.GWB5SR3fGh@xps13> <20140416130848.GC11887@localhost.localdomain> <534EABB4.9020301@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <534EABB4.9020301@6wind.com> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH 03/15] pmd: Add PMD_REGISTER_DRIVER macro X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Apr 2014 17:30:13 -0000 On Wed, Apr 16, 2014 at 06:11:32PM +0200, Olivier MATZ wrote: > Hi Neil, > > On 04/16/2014 03:08 PM, Neil Horman wrote: > >On Wed, Apr 16, 2014 at 01:52:49PM +0200, Thomas Monjalon wrote: > >>2014-04-15 14:05, Neil Horman: > >>>Rather than have each driver have to remember to add a constructor to it to > >>>make sure its gets registered properly, wrap that process up in a macro to > >>>make registration a one line affair. This also sets the stage for us to > >>>make registration of vdev pmds and physical pmds a uniform process > >>> > >>>Signed-off-by: Neil Horman > >> > >>Could you explain why having a macro is better than an explicit constructor > >>function? > >> > >Because its a one line declaration inside a driver function that points to the > >structure used to initilze the pmd? Having to append ((__constructor__)) to > >each initalization function is both error prone during entry and exposes the > >possibiilty of developers doing "too much" in their constructor. It also allows > >for easy updating to all drivers, if additional boilerplate work needs to be > >done in the future for all pmds. > > Even if it's not critical, in my opinion, the following code is easier > to understand: > > __attribute__((constructor)) > static void > rte_pmd_ring_init(void) > { > rte_eal_dev_driver_register(&pmd_ring_drv); > } > > Than: > > PMD_REGISTER_DRIVER(pmd_ring_drv); > > > The first version explicitly shows what you are doing: defining a > static function called at initialization that registers a driver > structure. > > With the second, we're tempted to check what this macro does... Which you will do once, and then forever be thankful that ever after you will only have to read the simple macro rather than all that nasty boilerplate and __attribute__ gorp... John -- John W. Linville Someday the world will need a hero, and you linville@tuxdriver.com might be all we have. Be ready.