У меня есть одноплатный компьютер с устройством расширения I2C GPIO, указанным как /dev/i2c-0. В моей многопоточной программе я открываю() это символьное устройство и читаю/пишу на него в отдельных потоках, используя i2c_smbus_write_byte_data и друзей из библиотеки libi2c, но я не уверен, что это потокобезопасно.
Я видел реализации драйвера GPIO в пространстве ядра, которые привязываются к символьному устройству I2C и позволяют взаимодействовать с устройством, как если бы оно было Устройство GPIO (драйвер pca953x), и у них есть внутренние мьютексы в каждой функции gpio_set/get. В другом вопросе люди говорят, что функции i2c_smbus_* имеют внутренние мьютексы, поэтому я не могу быть уверен.
Является ли этот вид одновременного доступа потокобезопасным?
void *thread_fn(void *arg){
int fd = *(int*)arg;
uint16_t d;
for(uint16_t i=0;i
Подробнее здесь: https://stackoverflow.com/questions/797 ... e-on-linux