^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) .. _gen_errors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *******************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) Generic Error Codes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *******************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) .. _gen-errors:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) .. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) .. flat-table:: Generic error codes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) :widths: 1 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) - - ``EAGAIN`` (aka ``EWOULDBLOCK``)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) - The ioctl can't be handled because the device is in state where it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) can't perform it. This could happen for example in case where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) device is sleeping and ioctl is performed to query statistics. It
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) is also returned when the ioctl would need to wait for an event,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) but the device was opened in non-blocking mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) - - ``EBADF``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) - The file descriptor is not a valid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) - - ``EBUSY``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) - The ioctl can't be handled because the device is busy. This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) typically return while device is streaming, and an ioctl tried to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) change something that would affect the stream, or would require
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) the usage of a hardware resource that was already allocated. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) ioctl must not be retried without performing another action to fix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) the problem first (typically: stop the stream before retrying).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) - - ``EFAULT``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) - There was a failure while copying data from/to userspace, probably
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) caused by an invalid pointer reference.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) - - ``EINVAL``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) - One or more of the ioctl parameters are invalid or out of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) allowed range. This is a widely used error code. See the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) individual ioctl requests for specific causes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - - ``ENODEV``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) - Device not found or was removed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) - - ``ENOMEM``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) - There's not enough memory to handle the desired operation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) - - ``ENOTTY``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) - The ioctl is not supported by the driver, actually meaning that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) the required functionality is not available, or the file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) descriptor is not for a media device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) - - ``ENOSPC``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) - On USB devices, the stream ioctl's can return this error, meaning
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) that this request would overcommit the usb bandwidth reserved for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) periodic transfers (up to 80% of the USB bandwidth).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) - - ``EPERM``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) - Permission denied. Can be returned if the device needs write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) permission, or some special capabilities is needed (e. g. root)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) - - ``EIO``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) - I/O error. Typically used when there are problems communicating with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) a hardware device. This could indicate broken or flaky hardware.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) It's a 'Something is wrong, I give up!' type of error.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) - - ``ENXIO``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) - No device corresponding to this device special file exists.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) .. note::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #. This list is not exhaustive; ioctls may return other error codes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) Since errors may have side effects such as a driver reset,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) applications should abort on unexpected errors, or otherwise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) assume that the device is in a bad state.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #. Request-specific error codes are listed in the individual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) requests descriptions.