[PATCH 0/4] Add GPIO chardev ioctl decoding
Kent Gibson
warthog618 at gmail.com
Wed Dec 30 01:21:00 UTC 2020
On Wed, Dec 30, 2020 at 04:13:40AM +0300, Dmitry V. Levin wrote:
> On Wed, Dec 30, 2020 at 08:30:20AM +0800, Kent Gibson wrote:
> > On Tue, Dec 29, 2020 at 11:44:42PM +0300, Dmitry V. Levin wrote:
> > > On Wed, Dec 23, 2020 at 06:07:44AM +0800, Kent Gibson wrote:
> > > > This patch set implements decoding of the GPIO character device ioctls
> > > > first added in Linux v4.8, extended in v5.5 and v5.7, and the v2 ioctls
> > > > added in v5.10, and a minor update for v5.11.
> > > >
> > > > The first patch adds a helper method used to print arrays of uint8,
> > > > as found in the GPIO API.
> > > > The second patch adds the decoding of the GPIO ioctls.
> > > > The third patch adds the decoding of the GPIO v2 ioctls.
> > > > The fourth patch adds decoding of the
> > > > GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME flag which is on track to be added
> > > > in Linux v5.11.
> > > >
> > > > Kent Gibson (4):
> > > > Add print_uint8_array_member() helper
> > > > Add GPIO ioctl decoding
> > > > Add GPIO uAPI v2 ioctl decoding
> > > > Add GPIO uAPI realtime clock flag
> > > >
> > > > Makefile.am | 1 +
> > > > configure.ac | 1 +
> > > > defs.h | 4 +
> > > > gpio_ioctl.c | 536 ++++++++++++++++++++++++++++++++++
> > > > ioctl.c | 4 +
> > > > util.c | 18 ++
> > > > xlat/gpio_event_flags.in | 3 +
> > > > xlat/gpio_handle_flags.in | 8 +
> > > > xlat/gpio_line_flags.in | 8 +
> > > > xlat/gpio_v2_line_attr_ids.in | 5 +
> > > > xlat/gpio_v2_line_flags.in | 14 +
> > > > 11 files changed, 602 insertions(+)
> > > > create mode 100644 gpio_ioctl.c
> > > > create mode 100644 xlat/gpio_event_flags.in
> > > > create mode 100644 xlat/gpio_handle_flags.in
> > > > create mode 100644 xlat/gpio_line_flags.in
> > > > create mode 100644 xlat/gpio_v2_line_attr_ids.in
> > > > create mode 100644 xlat/gpio_v2_line_flags.in
> > >
> > > Thanks for the patch set. Unfortunately, I don't see any changes
> > > to the test suite in this series. How did you test the new code?
> >
> > Yeah, sorry - not sure how to integrate my tests into your test suite,
> > and I didn't see anything in the commit requirements mentioning tests
> > either.
>
> There is a point of view that explicit requirements of tests would scare
> some potential contributors off, although we might reconsider this in the
> future.
>
> We strive to have a decent test coverage of strace decoders, currently we
> are at 87.5% lines coverage.
>
Totally agree with you there - you can't have too much testing.
> strace can be configured using --enable-code-coverage, this allows to
> capture the coverage using "make code-coverage-capture" after "make
> check". Please note that strace configured for capturing coverage
> is not intended for regular use.
>
> > I'm open to suggestions as to what you would like to see from some tests
> > for this. Testing the whole API is a bear that is probably best left
> > out of strace itself. Even smoke testing a handful of the ioctls in the
> > most trivial way is non-trivial to setup - you obviously don't want to
> > go messing with real hardware so you need to setup mocks which requires
> > kernel modules that you may not have available etc.
> >
> > Unless there is some other way to inject ioctls for strace to decode?
>
> strace test suite is run unprivileged and is not expected to have access
> to anything non-trivial.
> The idea is to test decoders, not the kernel, although we happen to bump
> into some kernel corner cases from time to time.
> Yes, we use syscall tampering features of strace in some tests.
>
> There is a relatively recent commit v5.6~27 that introduced a comprehensive
> set of HDIO_* ioctl decoding tests, you could use it as an example.
>
Thanks for the pointers - I'll take a look at it and hopefully get something
out in time for 5.11.
Cheers,
Kent.
More information about the Strace-devel
mailing list