From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f54.google.com (mail-wm0-f54.google.com [74.125.82.54]) by dpdk.org (Postfix) with ESMTP id C742F370 for ; Fri, 16 Dec 2016 10:23:15 +0100 (CET) Received: by mail-wm0-f54.google.com with SMTP id f82so24969825wmf.1 for ; Fri, 16 Dec 2016 01:23:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=8Zg5gjFdQleeDPYtWisxArNJirCQJokowFq+p6o7nFI=; b=1aaPzzvn15w/ghygcgAb/bFT4D8u8kdxP3uJkl/VVXaKTHTuIoJgawbW+DJIWU1+Kt eSm0LBKQwqPuPJIbZpLNdyLQvtPZgO+cUWTLif5rjk275bVXXGG1ohS9/ihZnHzKF7+x 5M2Kd5ZVmy3h9dOW7XCq3blmPnhl03GNx5kClf/yBG/UtdbtE26bpARZb30Lcjz7ofmq 4WIziMVs6QG061TUInrwQnepp9xtkbWAx/ySKNVDbTILAc6EmeUrn8X8/uIyKKZdnRAf jKWUcE+lCsXbvdRH9iQeI8Y13rbEzhhw0kvvZvjiyiJbcw8n0PiI/FXIoF/z70pVHe6Y s/eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=8Zg5gjFdQleeDPYtWisxArNJirCQJokowFq+p6o7nFI=; b=qCB9Oj5rp/v6PkrXE8e0TOWPn5vJ8FpOWja8jNpeSwyO1AGuzddhoTvv4QGYi1/K9f paaOdxumT5FJnISxSN6BvwkEw0frJmRFfKYhBoaBanH1dpG+qAJlN5xCM9h5eeiZ6GgQ 0pr0FV9ysxi06XMbvvs3ggDSXnACDRoWKhY/Fc792uTKB8XYq1zlMJAGb+PQfp7VUyrY m8x6ejgxfLHf0loy1rvOi1QcJ76oI6yYw0hmQTvLVqpAb/3JxNZpUSK8LLfhs1Tvm/YU AjMEDDNXg8HJ00I4xtYwVWW6FaLyUIvtux7/W+6kS2IJnkOA5WHtcvFdcGx7cM3E1Igv 1Iiw== X-Gm-Message-State: AIkVDXICEdmIcI10ftMEsZ3MAJR2JfuIe2SbITbhzMylSHK5Y+uWILuZerjvn//bs3N7uDL2 X-Received: by 10.28.69.91 with SMTP id s88mr2165116wma.18.1481880195547; Fri, 16 Dec 2016 01:23:15 -0800 (PST) Received: from 6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by smtp.gmail.com with ESMTPSA id c187sm2450161wmd.13.2016.12.16.01.23.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Dec 2016 01:23:14 -0800 (PST) Date: Fri, 16 Dec 2016 10:23:06 +0100 From: Adrien Mazarguil To: Jan Blunck Cc: Shreyansh Jain , dev@dpdk.org, David Marchand , Thomas Monjalon , Ferruh Yigit , jianbo.liu@linaro.org, Jan Viktorin Message-ID: <20161216092306.GD10340@6wind.com> References: <1480846288-2517-1-git-send-email-shreyansh.jain@nxp.com> <1481636232-2300-1-git-send-email-shreyansh.jain@nxp.com> <1481636232-2300-2-git-send-email-shreyansh.jain@nxp.com> <3310c320-fa39-cd8c-ab77-ced20daa5073@nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [dpdk-dev] [PATCH v2 01/12] eal: define container_of macro 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, 16 Dec 2016 09:23:15 -0000 On Fri, Dec 16, 2016 at 09:14:29AM +0100, Jan Blunck wrote: > On Wed, Dec 14, 2016 at 6:12 AM, Shreyansh Jain wrote: > > On Wednesday 14 December 2016 03:54 AM, Jan Blunck wrote: > >> > >> On Tue, Dec 13, 2016 at 2:37 PM, Shreyansh Jain > >> wrote: > >>> > >>> From: Jan Blunck > >>> > >>> This macro is based on Jan Viktorin's original patch but also checks the > >>> type of the passed pointer against the type of the member. > >>> > >>> Signed-off-by: Jan Viktorin > >>> [shreyansh.jain@nxp.com: Fix checkpatch error] > >>> Signed-off-by: Shreyansh Jain > >>> [jblunck@infradead.org: add type checking and __extension__] > >>> Signed-off-by: Jan Blunck > >>> > >>> -- > >>> v2: > >>> - fix checkpatch error > >>> --- > >>> lib/librte_eal/common/include/rte_common.h | 21 +++++++++++++++++++++ > >>> 1 file changed, 21 insertions(+) > >>> > >>> diff --git a/lib/librte_eal/common/include/rte_common.h > >>> b/lib/librte_eal/common/include/rte_common.h > >>> index db5ac91..3eb8d11 100644 > >>> --- a/lib/librte_eal/common/include/rte_common.h > >>> +++ b/lib/librte_eal/common/include/rte_common.h > >>> @@ -331,6 +331,27 @@ rte_bsf32(uint32_t v) > >>> #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER) > >>> #endif > >>> > >>> +/** > >>> + * Return pointer to the wrapping struct instance. > >>> + * > >>> + * Example: > >>> + * > >>> + * struct wrapper { > >>> + * ... > >>> + * struct child c; > >>> + * ... > >>> + * }; > >>> + * > >>> + * struct child *x = obtain(...); > >>> + * struct wrapper *w = container_of(x, struct wrapper, c); > >>> + */ > >>> +#ifndef container_of > >>> +#define container_of(ptr, type, member) (__extension__ ({ > >>> \ > >>> + typeof(((type *)0)->member) * _ptr = (ptr); \ > >>> + (type *)(((char *)_ptr) - offsetof(type, > >>> member));\ > >>> + })) > >> > >> > >> This is a checkpatch false positive. It should be fine to ignore this. > >> IIRC we already discussed this before. > > > > > > I too thought something similar was discussed. I tried searching the > > archives but couldn't find anything - thus, I thought probably I was > > hallucinating :P > > > > So, you want me to revert back the '()' change? Does it impact the expansion > > of this macro? > > We haven't added this on any other usage of the __extension__ keyword > in the existing code. From my perspective it is more consistent to > revert it. > > Anyone else with an opinion here? David? Thomas? As an exported header, rte_common.h must pass check-includes.sh. Both typeof() and the ({ ... }) construct are non-standard GCC extensions and would fail to compile with pedantic options. -- Adrien Mazarguil 6WIND