3. 解决方式
(1)系统接口
SylixOS 为 GPIO 的操作定义了标准的接口,分别是:gpiofd、gpiofd_read、gpiofd_write、close函数,用户可以像操作普通的字符设备一样,open/read/write/close即可完成大部分功能。
(2)实现方式
gpiofd_read 可返回指定 GPIO 的状态,但是此接口会立即返回,并不会发生阻塞,所以在 SylixOS 下读取具备中断功能的 GPIO 的方式是使用具备阻塞功能的 select 接口来实现。
(3)原因
至于为什么能够实现上述的操作,阅读 gpioDev.c 源代码即可,其中 ioctl 函数中实现了 select/unselect 接口,使得 GPIO 设备本身具备了 select 的功能,代码片段如下: