| .. Permission is granted to copy, distribute and/or modify this |
| .. document under the terms of the GNU Free Documentation License, |
| .. Version 1.1 or any later version published by the Free Software |
| .. Foundation, with no Invariant Sections, no Front-Cover Texts |
| .. and no Back-Cover Texts. A copy of the license is included at |
| .. Documentation/userspace-api/media/fdl-appendix.rst. |
| .. |
| .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections |
| |
| .. _gen_errors: |
| |
| ******************* |
| Generic Error Codes |
| ******************* |
| |
| |
| .. _gen-errors: |
| |
| .. tabularcolumns:: |p{2.5cm}|p{15.0cm}| |
| |
| .. flat-table:: Generic error codes |
| :header-rows: 0 |
| :stub-columns: 0 |
| :widths: 1 16 |
| |
| |
| - - ``EAGAIN`` (aka ``EWOULDBLOCK``) |
| |
| - The ioctl can't be handled because the device is in state where it |
| can't perform it. This could happen for example in case where |
| device is sleeping and ioctl is performed to query statistics. It |
| is also returned when the ioctl would need to wait for an event, |
| but the device was opened in non-blocking mode. |
| |
| - - ``EBADF`` |
| |
| - The file descriptor is not a valid. |
| |
| - - ``EBUSY`` |
| |
| - The ioctl can't be handled because the device is busy. This is |
| typically return while device is streaming, and an ioctl tried to |
| change something that would affect the stream, or would require |
| the usage of a hardware resource that was already allocated. The |
| ioctl must not be retried without performing another action to fix |
| the problem first (typically: stop the stream before retrying). |
| |
| - - ``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. See the |
| individual ioctl requests for specific causes. |
| |
| - - ``ENODEV`` |
| |
| - Device not found or was removed. |
| |
| - - ``ENOMEM`` |
| |
| - There's not enough memory to handle the desired operation. |
| |
| - - ``ENOTTY`` |
| |
| - The ioctl is not supported by the driver, actually meaning that |
| the required functionality is not available, or the file |
| descriptor is not for a media device. |
| |
| - - ``ENOSPC`` |
| |
| - On USB devices, the stream ioctl's can return this error, meaning |
| that this request would overcommit the usb bandwidth reserved for |
| periodic transfers (up to 80% of the USB bandwidth). |
| |
| - - ``EPERM`` |
| |
| - Permission denied. Can be returned if the device needs write |
| permission, or some special capabilities is needed (e. g. root) |
| |
| - - ``EIO`` |
| |
| - I/O error. Typically used when there are problems communicating with |
| a hardware device. This could indicate broken or flaky hardware. |
| It's a 'Something is wrong, I give up!' type of error. |
| |
| - - ``ENXIO`` |
| |
| - No device corresponding to this device special file exists. |
| |
| |
| .. 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. |