| <title>Generic Error Codes</title> |
| |
| <table frame="none" pgwide="1" id="gen-errors"> |
| <title>Generic error codes</title> |
| <tgroup cols="2"> |
| &cs-str; |
| <tbody valign="top"> |
| <!-- Keep it ordered alphabetically --> |
| <row> |
| <entry>EAGAIN (aka EWOULDBLOCK)</entry> |
| <entry>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. |
| </entry> |
| </row> |
| <row> |
| <entry>EBADF</entry> |
| <entry>The file descriptor is not a valid.</entry> |
| </row> |
| <row> |
| <entry>EBUSY</entry> |
| <entry>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).</entry> |
| </row> |
| <row> |
| <entry>EFAULT</entry> |
| <entry>There was a failure while copying data from/to userspace, |
| probably caused by an invalid pointer reference.</entry> |
| </row> |
| <row> |
| <entry>EINVAL</entry> |
| <entry>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.</entry> |
| </row> |
| <row> |
| <entry>ENODEV</entry> |
| <entry>Device not found or was removed.</entry> |
| </row> |
| <row> |
| <entry>ENOMEM</entry> |
| <entry>There's not enough memory to handle the desired operation.</entry> |
| </row> |
| <row> |
| <entry>ENOTTY</entry> |
| <entry>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.</entry> |
| </row> |
| <row> |
| <entry>ENOSPC</entry> |
| <entry>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).</entry> |
| </row> |
| <row> |
| <entry>EPERM</entry> |
| <entry>Permission denied. Can be returned if the device needs write |
| permission, or some special capabilities is needed |
| (e. g. root)</entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </table> |
| |
| <para>Note 1: ioctls may return other error codes. Since errors may have side |
| effects such as a driver reset, applications should abort on unexpected errors. |
| </para> |
| |
| <para>Note 2: Request-specific error codes are listed in the individual |
| requests descriptions.</para> |