Linux设备驱动程序中针对多线程应用程序的READ / WRITE和RELEASE处理

时间:2013-09-25 05:20:55

标签: linux-kernel mutex linux-device-driver vfs

在编写驱动程序时,我遇到了下面提到的问题。

鉴于多线程应用程序通过相同的FD访问同一设备文件。考虑在对OPEN和RELEASE的调用之间,有一些资源(比如mutex)由线程组相互保持。这些资源在READ / WRITE调用期间使用,然后在RELEASE期间最终放弃或销毁。

如果在READ / WRITE期间有一个线程访问资源而另一个线程通过调用close同时调用RELEASE,那么VFS如何确保在READ中至少有一个线程之前不调用RELEASE,写,或​​者喜欢。处理这种保护的机制是什么?

1 个答案:

答案 0 :(得分:4)

设备驱动程序上方的内核层会跟踪存在多少对打开文件的引用,并且在关闭所有这些引用之前不会调用release函数。这在LDD3中有所记载:http://tjworld.net/books/ldd3/#TheReleaseMethod