Linux I2C文件句柄 - 可以安全缓存吗?

时间:2014-10-06 12:37:21

标签: linux embedded-linux i2c

我刚刚开始关注(嵌入式)linux上的I2C支持(准确地说是Beaglebone Black)。因为它是linux,所以一切都是文件,因此I2C也就不足为奇了。

int file = open( "/dev/i2c-0", O_RDWR );

然后通过ioctl()选择该总线上的实际地址。我的问题是 - 在应用程序执行期间缓存file是安全的,还是 legal ?在我的幼稚眼中,似乎每隔250毫秒打开一个资源的过头就会对内核造成不必要的压力。所以打开是有效的,然后只需使用ioctl()来切换地址,或者我必须close()读写之间的描述符?

1 个答案:

答案 0 :(得分:4)

  

在应用程序执行期间缓存file是安全的,甚至是合法的?

只要程序需要继续执行,文件描述符(从open()返回)就有效。

/ dev中的设备节点可能类似于文件名,但是一旦看过syscall接口,它们就会与文件系统条目区别对待。设备的文件描述符上的open()或read()将调用设备驱动程序,而对于实际文件,调用其文件系统,最终可能调用存储设备驱动程序。

  

在我的幼稚眼中,似乎每隔250毫秒打开一个资源的过头就会对内核造成不必要的压力。

是的,因为那些open()和close()系统调用是不必要的。

  

因此打开是有效的,然后只需使用ioctl()在需要时切换地址,

是的,这是正确的用途。

  

或者我必须在读写之间关闭()描述符吗?

这没有必要也没有建议。