GPIO 错误码

常见 GPIO 错误码

EAGAIN (即 EWOULDBLOCK)

设备以非阻塞模式打开,但由于没有可用数据,无法执行读取操作。

EBADF

文件描述符无效。

EBUSY

ioctl 无法处理,因为设备正忙。通常在 ioctl 尝试执行需要已分配资源的操作时返回。在未首先执行其他操作来解决问题之前,不应重试 ioctl。

EFAULT

从/向用户空间复制数据时发生故障,可能是由无效指针引用引起的。

EINVAL

一个或多个 ioctl 参数无效或超出允许范围。这是一个广泛使用的错误码。

ENODEV

设备未找到或已被移除。

ENOMEM

没有足够的内存来处理所需的操作。

EPERM

权限被拒绝。通常在尝试执行与当前线路配置不兼容的操作时返回。

EIO

I/O 错误。通常在与硬件设备通信出现问题或请求硬件不支持的功能时返回。这可能表明硬件损坏或不稳定。这是一种“出了问题,我放弃了!”类型的错误。

ENXIO

通常在请求需要中断支持的功能但线路不支持中断时返回。

注意

  1. 此列表并非详尽无遗;ioctl 可能会返回其他错误码。由于错误可能产生副作用,例如驱动程序重置,因此应用程序应在遇到意外错误时中止,或者假定设备处于不良状态。

  2. 请求特定的错误码在各个请求说明中列出。