Back to Linux

GPIO Error Codes

Documentation/userspace-api/gpio/error-codes.rst

latest2.3 KB
Original Source

.. SPDX-License-Identifier: GPL-2.0

.. _gpio_errors:


GPIO Error Codes


.. _gpio-errors:

.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|

.. flat-table:: Common GPIO error codes :header-rows: 0 :stub-columns: 0 :widths: 1 16

-  -  ``EAGAIN`` (aka ``EWOULDBLOCK``)

   -  The device was opened in non-blocking mode and a read can't
      be performed as there is no data available.

-  -  ``EBADF``

   -  The file descriptor is not valid.

-  -  ``EBUSY``

   -  The ioctl can't be handled because the device is busy. Typically
      returned when an ioctl attempts something that would require the
      usage of a resource that was already allocated. The ioctl must not
      be retried without performing another action to fix the problem
      first.

-  -  ``EFAULT``

   -  There was a failure while copying data from/to userspace, probably
  caused by an invalid pointer reference.

-  -  ``EINVAL``

   -  One or more of the ioctl parameters are invalid or out of the
      allowed range. This is a widely used error code.

-  -  ``ENODEV``

   -  Device not found or was removed.

-  -  ``ENOMEM``

   -  There's not enough memory to handle the desired operation.

-  -  ``EPERM``

   -  Permission denied. Typically returned in response to an attempt
      to perform an action incompatible with the current line
      configuration.

-  -  ``EIO``

   -  I/O error. Typically returned when there are problems communicating
      with a hardware device or requesting features that hardware does not
      support. This could indicate broken or flaky hardware.
      It's a 'Something is wrong, I give up!' type of error.

-  - ``ENXIO``

   -  Typically returned when a feature requiring interrupt support was
      requested, but the line does not support interrupts.

.. note::

#. This list is not exhaustive; ioctls may return other error codes. Since errors may have side effects such as a driver reset, applications should abort on unexpected errors, or otherwise assume that the device is in a bad state.

#. Request-specific error codes are listed in the individual requests descriptions.