gpiolib: add new ioctl() for monitoring changes in line info
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Fri, 22 Nov 2019 14:19:21 +0000 (15:19 +0100)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Wed, 12 Feb 2020 11:05:47 +0000 (12:05 +0100)
commit51c1064e82e77b39a49889287ca50709303e2f26
treeaa4f90cf74ddbd16277b4b4f7f21d2667694bf0d
parentd2ac25798208fb85f866056cd7d8030eb919da99
gpiolib: add new ioctl() for monitoring changes in line info

Currently there is no way for user-space to be informed about changes
in status of GPIO lines e.g. when someone else requests the line or its
config changes. We can only periodically re-read the line-info. This
is fine for simple one-off user-space tools, but any daemon that provides
a centralized access to GPIO chips would benefit hugely from an event
driven line info synchronization.

This patch adds a new ioctl() that allows user-space processes to reuse
the file descriptor associated with the character device for watching
any changes in line properties. Every such event contains the updated
line information.

Currently the events are generated on three types of status changes: when
a line is requested, when it's released and when its config is changed.
The first two are self-explanatory. For the third one: this will only
happen when another user-space process calls the new SET_CONFIG ioctl()
as any changes that can happen from within the kernel (i.e.
set_transitory() or set_debounce()) are of no interest to user-space.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib.c
drivers/gpio/gpiolib.h
include/uapi/linux/gpio.h