From: Kent Gibson <warthog618@gmail.com>
To: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH v2 05/18] gpiolib: cdev: support GPIO_GET_LINE_IOCTL and GPIOLINE_GET_VALUES_IOCTL
Date: Tue, 4 Aug 2020 07:01:18 +0800 [thread overview]
Message-ID: <20200803230118.GA3650@sol> (raw)
In-Reply-To: <CAMpxmJWZpMFbrMBkLiR9q7chdamVnjw0geDf-pgKrz=AWD8mNg@mail.gmail.com>
On Mon, Aug 03, 2020 at 10:02:50PM +0200, Bartosz Golaszewski wrote:
> On Sun, Aug 2, 2020 at 5:32 AM Kent Gibson <warthog618@gmail.com> wrote:
> >
> > On Fri, Jul 31, 2020 at 06:05:10PM +0200, Bartosz Golaszewski wrote:
> > > On Sun, Jul 26, 2020 at 3:12 AM Kent Gibson <warthog618@gmail.com> wrote:
>
> [snip!]
>
> > > > >
> > > > > > +static u64 gpioline_config_flags(struct gpioline_config *lc, int line_idx)
> > > > > > +{
> > > > > > + int i;
> > > > > > +
> > > > > > + for (i = lc->num_attrs - 1; i >= 0; i--) {
> > > > >
> > > > > Much better to read is
> > > > >
> > > > > unsigned int i = lc->num_attrs;
> > > > >
> > > > > while (i--) {
> > > > > ...
> > > > > }
> > > > >
> > > >
> > > > Really? I find that the post-decrement in the while makes determining the
> > > > bounds of the loop more confusing.
> > > >
> > >
> > > Agreed, Andy: this is too much nit-picking. :)
> > >
> >
> > I was actually hoping for some feedback on the direction of that loop,
> > as it relates to the handling of multiple instances of the same
> > attribute associated with a given line.
> >
> > The reverse loop here implements a last in wins policy, but I'm now
> > thinking the kernel should be encouraging userspace to only associate a
> > given attribute with a line once, and that a first in wins would help do
> > that - as additional associations would be ignored.
> >
> > Alternatively, the kernel should enforce that an attribute can only be
> > associated once, but that would require adding more request validation.
> >
>
> I guess this would result in a lot of churn to do validation which is
> largely unnecessary? To me the first in wins sounds more consistent.
>
Fully validating the attrs would involve a lot of tedious looping, which
would be pointless 99.99% of the time, so I was hoping to avoid it.
OTOH we're interacting with hardware so I don't want to be doing
anything that userspace hasn't explicitly requested.
But I would be satisfied with clearly documenting the behaviour - and
in most cases libgpiod will be taking care of it anyway...
> Also: I just started going through the patches - nice idea with the
> GPIO attributes, I really like it. Although I need to give it a longer
> thought tomorrow - I'm wondering if we can maybe unify them and the
> flags.
>
I had an earlier draft that did just that - and that is partially why
the loop is last in wins - I was using slot 0 as the default flags.
But the default flags cover a lot of use cases, including all of v1, and
it was simple and cheap to provide a default - and it simplified the
initial port of libgpiod to v2...
Cheers,
Kent.
next prev parent reply other threads:[~2020-08-03 23:01 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-25 4:19 [PATCH v2 00/18] gpio: cdev: add uAPI V2 Kent Gibson
2020-07-25 4:19 ` [PATCH v2 01/18] gpio: uapi: define GPIO_MAX_NAME_SIZE for array sizes Kent Gibson
2020-07-25 4:19 ` [PATCH v2 02/18] gpio: uapi: define uAPI v2 Kent Gibson
2020-08-04 17:42 ` Bartosz Golaszewski
2020-08-05 5:18 ` Kent Gibson
2020-08-05 17:47 ` Bartosz Golaszewski
2020-08-06 1:03 ` Kent Gibson
2020-08-06 1:15 ` Kent Gibson
2020-08-06 15:53 ` Bartosz Golaszewski
2020-07-25 4:19 ` [PATCH v2 03/18] gpiolib: make cdev a build option Kent Gibson
2020-07-25 20:29 ` Andy Shevchenko
2020-07-26 22:25 ` Linus Walleij
2020-07-27 1:46 ` Kent Gibson
2020-07-27 5:57 ` Kent Gibson
2020-07-27 8:15 ` Linus Walleij
2020-07-25 4:19 ` [PATCH v2 04/18] gpiolib: add build option for CDEV v1 ABI Kent Gibson
2020-07-25 4:19 ` [PATCH v2 05/18] gpiolib: cdev: support GPIO_GET_LINE_IOCTL and GPIOLINE_GET_VALUES_IOCTL Kent Gibson
2020-07-25 20:51 ` Andy Shevchenko
2020-07-26 1:12 ` Kent Gibson
2020-07-26 3:24 ` Kent Gibson
2020-07-29 2:28 ` Kent Gibson
2020-07-29 8:05 ` Andy Shevchenko
2020-07-29 10:01 ` Kent Gibson
2020-07-31 16:05 ` Bartosz Golaszewski
2020-08-02 3:31 ` Kent Gibson
2020-08-02 9:32 ` Kent Gibson
2020-08-03 19:59 ` Bartosz Golaszewski
2020-08-03 20:02 ` Bartosz Golaszewski
2020-08-03 23:01 ` Kent Gibson [this message]
2020-08-04 17:47 ` Bartosz Golaszewski
2020-08-05 3:06 ` Kent Gibson
2020-07-25 4:19 ` [PATCH v2 06/18] gpiolib: cdev: support GPIO_GET_LINEINFO_V2_IOCTL and GPIO_GET_LINEINFO_WATCH_V2_IOCTL Kent Gibson
2020-07-25 4:19 ` [PATCH v2 07/18] gpiolib: cdev: support edge detection for uAPI v2 Kent Gibson
2020-08-04 19:28 ` Bartosz Golaszewski
2020-07-25 4:19 ` [PATCH v2 08/18] gpiolib: cdev: support GPIOLINE_SET_CONFIG_IOCTL Kent Gibson
2020-07-25 4:19 ` [PATCH v2 09/18] gpiolib: cdev: support GPIOLINE_SET_VALUES_IOCTL Kent Gibson
2020-07-25 4:19 ` [PATCH v2 10/18] gpiolib: cdev: support setting debounce Kent Gibson
2020-07-25 4:19 ` [PATCH v2 11/18] gpio: uapi: document uAPI v1 as deprecated Kent Gibson
2020-08-04 19:43 ` Bartosz Golaszewski
2020-07-25 4:19 ` [PATCH v2 12/18] tools: gpio: port lsgpio to v2 uAPI Kent Gibson
2020-07-25 4:19 ` [PATCH v2 13/18] tools: gpio: port gpio-watch " Kent Gibson
2020-07-25 4:19 ` [PATCH v2 14/18] tools: gpio: rename nlines to num_lines Kent Gibson
2020-07-25 4:19 ` [PATCH v2 15/18] tools: gpio: port gpio-hammer to v2 uAPI Kent Gibson
2020-07-25 4:19 ` [PATCH v2 16/18] tools: gpio: port gpio-event-mon " Kent Gibson
2020-07-25 4:19 ` [PATCH v2 17/18] tools: gpio: add debounce support to gpio-event-mon Kent Gibson
2020-07-25 4:19 ` [PATCH v2 18/18] tools: gpio: add multi-line monitoring " Kent Gibson
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=20200803230118.GA3650@sol \
--to=warthog618@gmail.com \
--cc=andy.shevchenko@gmail.com \
--cc=bgolaszewski@baylibre.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.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 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.