我需要一个互斥锁来保护可以通过sysfs获取/设置的int值吗?
问题描述:
多用户空间进程可以同时访问这个值,所以我想我们应该使用一些锁或内存屏障东西安全的,但我能找到Linux驱动程序相当多的代码谁不会,或者只是保护写情况。 我们是否真的需要互斥读写和写入大小写?我需要一个互斥锁来保护可以通过sysfs获取/设置的int值吗?
答
这取决于CPU和被执行的代码在系统上。其实如果操作原子你可以做到这一点没有同步技术。只要你不确定这一点,最好使用同步对象。对于int/dword值,大多数情况下,人们在没有sych对象的情况下执行此操作。
阅读这篇文章 http://preshing.com/20130618/atomic-vs-non-atomic-operations/
+0
感谢您的解释和您的链接:-) –
使用你SHM? (共享内存段) – rak007
不是。我的情况是,例如,我有一个RW寄存器“REG”,并在司机我缓存它与“INT REG”的值,然后创建一个sysfs文件,让我们说,“/sys/.../reg”。当用户回声int值到“/sys/.../reg”,此值将被写入到REG,和缓存为“int REG”;当用户cat“/sys/.../reg”时,驱动程序会给用户“int reg”。我的问题是,我是否需要添加一个互斥锁来保护echo int和cat case的“int reg”? –
如果您在多进程/线程文件写作,也许这篇文章可以帮助你:https://stackoverflow.com/questions/26565498/multiple-threads-writing-on-same-file – rak007