97 lines
2.8 KiB
ReStructuredText
97 lines
2.8 KiB
ReStructuredText
|
.. -*- coding: utf-8; mode: rst -*-
|
||
|
|
||
|
.. _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.
|