what is the current/ongoing state of userspace access to GPIO?

Clemens Gruber clemens.gruber at pqgruber.com
Wed May 24 08:50:15 EDT 2017


Hi,

On Wed, May 24, 2017 at 07:58:19AM -0400, Robert P. J. Day wrote:
>
>   ashamed to admit, i haven't been keeping up with this, so AIUI, the
> GPIO sysfs interface is deprecated, replaced with character device
> files (/dev/gpiochip*) to allow access to GPIO.
>
>   first, i find it curious that this is a move away from sysfs access
> to using ioctl(), since i had always thought ioctls were massively
> discouraged in new code. is there a document that goes through the
> rationale for this change?
>
>   and i notice under Documentation/ABI/ that sysfs-gpio is listed
> under "obsolete", while gpio-cdev is listed under "testing". this
> seems inconsistent -- how can one be obsolete while the other be
> categorized as testing? that just seems strange.
>
>   in any event, is the /dev/gpiochip* interface the recommended
> interface now? thanks.

Linus Walleij described the rationale in the first commit description.
Have a look at 3c702e9987e2.

Implementing it with netlink sockets would have made it much more
complex, I suppose this is why they chose ioctl?

By the way, I can recommend accessing the GPIO chardev with libgpiod:
https://github.com/brgl/libgpiod

This simplifies using it a lot! The tools are also quite nice.

Cheers,
Clemens



More information about the Kernelnewbies mailing list