我正在嵌入式 Linux 中编写一个多线程 C 程序,该程序从用户空间访问多个 I2C 设备(从属设备)。另外,我从多个线程访问同一个 I2C 设备。我正在使用 SMBUS 函数(i2c_smbus_write_byte_data、i2c_smbus_read_byte_data、i2c_smbus_read_i2c_block_data、...)。
是否有任何内置的并发访问保护,或者我需要自己添加互斥锁?
例如:我有一个读取功能,可以通过 I2C 从一个传感器读取数据。但是同样的函数也可以从另一个线程调用,从而导致可能的并发访问。我是否必须在该函数中使用一些静态互斥锁,或者它是否已经在 I2C 访问函数中?