linux-pwm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Julia Lawall <julia.lawall@inria.fr>
Cc: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Menna Mahmoud" <eng.mennamahmoud.mm@gmail.com>,
	outreachy@lists.linux.dev, johan@kernel.org, elder@kernel.org,
	vireshk@kernel.org, thierry.reding@gmail.com,
	greybus-dev@lists.linaro.org, linux-kernel@vger.kernel.org,
	linux-staging@lists.linux.dev, linux-pwm@vger.kernel.org
Subject: Re: [PATCH 2/3] staging: greybus: use inline function for macros
Date: Tue, 21 Mar 2023 18:01:44 +0100	[thread overview]
Message-ID: <ZBni+Ho63jwZth9F@kroah.com> (raw)
In-Reply-To: <9a775966-29d4-12b3-e67d-4327194f972@inria.fr>

On Tue, Mar 21, 2023 at 05:35:54PM +0100, Julia Lawall wrote:
> 
> 
> On Tue, 21 Mar 2023, Uwe Kleine-König wrote:
> 
> > On Tue, Mar 21, 2023 at 04:59:49PM +0100, Julia Lawall wrote:
> > >
> > >
> > > On Tue, 21 Mar 2023, Uwe Kleine-König wrote:
> > >
> > > > Hello,
> > > >
> > > > just some nitpicks:
> > > >
> > > > On Tue, Mar 21, 2023 at 01:04:33AM +0200, Menna Mahmoud wrote:
> > > > > Convert `to_gbphy_dev` and `to_gbphy_driver` macros into a
> > > > > static inline function.
> > > > >
> > > > > it is not great to have macro that use `container_of` macro,
> > > >
> > > > s/it/It/; s/macro/macros/; s/use/use the/;
> > > >
> > > > > because from looking at the definition one cannot tell what type
> > > > > it applies to.
> > > > > [...]
> > > > > -#define to_gbphy_dev(d) container_of(d, struct gbphy_device, dev)
> > > > > +static inline struct gbphy_device *to_gbphy_dev(const struct device *d)
> > > >
> > > > drivers/staging/greybus/gbphy.c always passes a variable named
> > > > "dev" to this macro. So I'd call the parameter "dev", too, instead of
> > > > "d". This is also a more typical name for variables of that type.
> > >
> > > I argued against that.  Because then there are two uses of dev
> > > in the argument of container_of, and they refer to completely different
> > > things.  It's true that by the way container_of works, it's fine, but it
> > > may be misleading.
> >
> > Hmm, that seems to be subjective, but I have less problems with that
> > than with using "d" for a struct device (or a struct device_driver).
> > I'd even go so far as to consider it nice if they are identical.
> >
> > Maybe that's because having the first and third argument identical is
> > quite common:
> >
> > 	$ git grep -P 'container_of\((?<ident>[A-Za-z_0-9-]*)\s*,[^,]*,\s*\g{ident}\s*\)' | wc -l
> > 	5940
> >
> > which is >44% of all the usages
> >
> > 	$ git grep -P 'container_of\((?<ident>[A-Za-z_0-9-]*)\s*,[^,]*,\s*(?&ident)\s*\)' | wc -l
> > 	13362
> 
> OK, if people like that, then why not.  But it's dangerous if the call to
> container_of is in a macro, rather than in a function.

It's not "dangerous" at all, as the macro will enforce type-safety, you
can't get it wrong when using it.

Ideally this is best as a macro as it's just doing pointer math, worst
case, the compiler turns a function like this into a real function and
you have a call/subtract/return for every time you make this call.

So this conversion to functions feels odd to me, as you potentially are
making all of this worse overall.

Wait until people realize that when we eventually turn these into
container_of_const() you HAVE to go back to using it as a macro instead
of in a function call wrapper like this...

thanks,

greg k-h

  reply	other threads:[~2023-03-21 17:01 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-20 23:04 [PATCH 0/3] edits in greybus driver Menna Mahmoud
2023-03-20 23:04 ` [PATCH 1/3] staging: greybus: remove unnecessary blank line Menna Mahmoud
2023-03-20 23:04 ` [PATCH 2/3] staging: greybus: use inline function for macros Menna Mahmoud
2023-03-21 15:47   ` Uwe Kleine-König
2023-03-21 15:59     ` Julia Lawall
2023-03-21 16:26       ` Uwe Kleine-König
2023-03-21 16:35         ` Julia Lawall
2023-03-21 17:01           ` Greg KH [this message]
2023-03-21 16:25     ` Menna Mahmoud
2023-03-21 16:42       ` Uwe Kleine-König
2023-03-21 17:21         ` Menna Mahmoud
2023-03-20 23:04 ` [PATCH 3/3] staging: greybus: remove unnecessary blank line Menna Mahmoud
2023-03-21 11:46 ` [PATCH 0/3] edits in greybus driver Julia Lawall
2023-03-21 16:22   ` Menna Mahmoud
2023-03-21 16:26     ` Greg KH
2023-03-21 17:24       ` Menna Mahmoud
2023-03-21 16:39     ` Julia Lawall
2023-03-21 17:26       ` Menna Mahmoud

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZBni+Ho63jwZth9F@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=elder@kernel.org \
    --cc=eng.mennamahmoud.mm@gmail.com \
    --cc=greybus-dev@lists.linaro.org \
    --cc=johan@kernel.org \
    --cc=julia.lawall@inria.fr \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=outreachy@lists.linux.dev \
    --cc=thierry.reding@gmail.com \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=vireshk@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).