GPIO Error Codes¶
  | 
The device was opened in non-blocking mode and a read can’t be performed as there is no data available.  | 
  | 
The file descriptor is not valid.  | 
  | 
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.  | 
  | 
There was a failure while copying data from/to userspace, probably caused by an invalid pointer reference.  | 
  | 
One or more of the ioctl parameters are invalid or out of the allowed range. This is a widely used error code.  | 
  | 
Device not found or was removed.  | 
  | 
There’s not enough memory to handle the desired operation.  | 
  | 
Permission denied. Typically returned in response to an attempt to perform an action incompatible with the current line configuration.  | 
  | 
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.  | 
  | 
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.