From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by dpdk.org (Postfix) with ESMTP id B02B02C0A for ; Fri, 16 Dec 2016 09:14:30 +0100 (CET) Received: by mail-wm0-f67.google.com with SMTP id u144so3699174wmu.0 for ; Fri, 16 Dec 2016 00:14:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=JQRW/e7upDih6TLDkueYtZqeiOE7eyuh381SHHTgA2g=; b=t+ha+QYKCZ4yfHhh48LMeJGynV1GgRtyLtnzD/0PQHaVibpoeHzlOxIgPDOfdoLNkZ Y11FbP0ZgvNpcl+zkne7cI8Yo/CyBUbFXRLMYq8kZenxd9Od9X6Z01CVo6qFnF+Lr0W0 YroJJTCOieDdb5alnl8Sf5Zc7pjneI5maHRjqiJJIuaPGrZ/imI8Syfb9jS5o+h3gjl8 aWiSBwz8PuzQdVYWTA6lvjT1aJohv9w3r43xE68ebqMWvRCq0Sb0fPqbDcnRsfh2NT83 5sFg1sQzH3fVzpk1+kZsBxBF4gkY1Fv6TYVPQP2mhZCvQ1PWwNMvrpiW5oYGOYuAS4yq fj4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=JQRW/e7upDih6TLDkueYtZqeiOE7eyuh381SHHTgA2g=; b=kX0gHcpxkmqFFkq1buVdOQzcoEG1wNiPLAiuvNI00wmnHmLTmFCeUwLcPbuNjmEP8p m6cvxRXnpFKOO1BmOkPPyXK8YnNEvHfOFPkOEqXzDabl+6k9PvGN+EDT0BPtR1h+QepD RNHsbChwtOOZvTqMecl+ZG4D+/5CHyEBIt2PYMZ6FgDLFBdGfQmqH67Qm39MXXMEZS3v 49UFJzssmdTUBy2z87gDh/LfRS1oN0c5uNe/KDRIBJTR1ZECsl+Ih5V05JlmoVdeLINv H169G2sP6HveBT3LmzD4SMrvTfWc74tn7AoGpgcrTbZpg1z1lcIsbdo7VtUA5JCPBMnJ 27Cw== X-Gm-Message-State: AIkVDXIjKXqy4sepQv+V9yIaAwIirAvvnWVqFU4DOK/Usxr4CcOfJ7pHNbjafxqwLjVRqCcAwV1W45WVFt1wKg== X-Received: by 10.28.158.82 with SMTP id h79mr1905877wme.19.1481876070305; Fri, 16 Dec 2016 00:14:30 -0800 (PST) MIME-Version: 1.0 Sender: jblunck@gmail.com Received: by 10.28.63.83 with HTTP; Fri, 16 Dec 2016 00:14:29 -0800 (PST) In-Reply-To: <3310c320-fa39-cd8c-ab77-ced20daa5073@nxp.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> From: Jan Blunck Date: Fri, 16 Dec 2016 09:14:29 +0100 X-Google-Sender-Auth: fhDQ2T1zEtXNYmRUwLsmwjnMLwI Message-ID: To: Shreyansh Jain Cc: dev@dpdk.org, David Marchand , Thomas Monjalon , Ferruh Yigit , jianbo.liu@linaro.org, Jan Viktorin Content-Type: text/plain; charset=UTF-8 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 08:14:30 -0000 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? > >> >> >>> +#endif >>> + >>> #define _RTE_STR(x) #x >>> /** Take a macro value and get a string version of it */ >>> #define RTE_STR(x) _RTE_STR(x) >>> -- >>> 2.7.4 >>> >> >