From: Lee Jones <lee.jones@linaro.org>
To: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Philipp Zabel <p.zabel@pengutronix.de>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Hans de Goede <hdegoede@redhat.com>
Subject: Re: [PATCH] reset: generate reset_control_get variants with macro expansion
Date: Thu, 21 Jul 2016 13:06:00 +0100 [thread overview]
Message-ID: <20160721120600.GC14925@dell> (raw)
In-Reply-To: <CAK7LNATuDMhcH0z77=Wmt1uC437KLbmvLOwtFUYW-y-XpQ-KYg@mail.gmail.com>
On Thu, 21 Jul 2016, Masahiro Yamada wrote:
> 2016-07-21 17:41 GMT+09:00 Philipp Zabel <p.zabel@pengutronix.de>:
> > Am Donnerstag, den 21.07.2016, 14:05 +0900 schrieb Masahiro Yamada:
> >> The recent update in the reset subsystem requires all reset consumers
> >> to be explicit about the requested reset lines; _explicit or _shared.
> >> This effectively doubled the number of reset_control_get variants.
> >> Also, we already had _optional variants.
> >>
> >> We see some pattern in the reset_control_get APIs.
> >>
> >> There are 6 base functions in terms of function prototype:
> >> reset_control_get
> >> reset_control_get_by_index
> >> of_reset_control_get
> >> of_reset_control_get_by_index
> >> devm_reset_control_get
> >> devm_reset_control_get_by_index
> >>
> >> Each of them has 4 variants with the following suffixes:
> >> _exclusive
> >> _shared
> >> _optional_exclusive
> >> _optional_shared
> >>
> >> The exhaustive set of functions (6 * 4) can be generated with macro
> >> expansion. It will mitigate the pain of maintaining proliferating
> >> APIs.
> >>
> >> I merged similar comment blocks into two, for functions in core.c
> >> because copy-paste work for similar comment blocks is error-prone.
> >>
> >> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
[...]
I did entertain several ways of reducing this API myself, so I know
where you are coming from but ...
> > I think when Lee suggested the API change, I initially leaned towards a
> > single entry point with flags, similar to the irq request API:
> > reset_control_get(..., RSTF_EXCLUSIVE)
> > reset_control_get(..., RSTF_SHARED)
> > reset_control_get(..., RSTF_OPTIONAL | RSTF_EXCLUSIVE)
> > reset_control_get(..., RSTF_OPTIONAL | RSTF_SHARED)
> > On the other hand, with that API users could forget the flags or use
> > incompatible combinations, which is impossible with the current API.
This is the age-old 'lines-of-code over {grep,read,maintain}ability'
argument, and I'm afraid to say that this patch, although saves some
lines, the {grep,read,maintain}ability takes too much of a big hit
IMHO.
As a developer, I find it very annoying when I can't directly grep for
functions that have been written in a 'clever' (read 'obfuscated')
way. And since this is a) a header file and b) all of the verboseness
is in a single/central place, it's better left as it is.
I'd entertain the FLAGS idea, since this is very common in the kernel
and users/developers know their way around those already, but MACRO
driven function names, no way!
> If you are unhappy with this patch,
> I will send an alternative one,
> which adds 4 more functions in a stupid and straightforward way.
Yes, 'simple' and straightforward is what we're looking for and is the
way forward.
--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2016-07-21 12:04 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-21 5:05 [PATCH] reset: generate reset_control_get variants with macro expansion Masahiro Yamada
2016-07-21 8:41 ` Philipp Zabel
2016-07-21 9:53 ` Masahiro Yamada
2016-07-21 12:06 ` Lee Jones [this message]
2016-07-22 12:58 ` Philipp Zabel
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=20160721120600.GC14925@dell \
--to=lee.jones@linaro.org \
--cc=hdegoede@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=yamada.masahiro@socionext.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.