linux-kernel之Linux 设备驱动程序中针对多线程应用程序的读/写和释放处理
wuhuacong
阅读:19
2024-11-01 17:39:52
评论:0
在编写驱动程序时,我遇到了下面提到的问题。
给定一个多线程应用程序通过同一个 FD 访问同一个设备文件。考虑在对 OPEN 和 RELEASE 的调用之间,线程组相互持有一些资源(比如互斥量)。这些资源在 READ/WRITE 调用期间使用,然后最终在 RELEASE 期间放弃或销毁。
如果在 READ/WRITE 期间有一个线程访问资源,而另一个线程同时通过调用 close 调用 RELEASE,VFS 如何确保在 READ 中至少有一个线程之前不会调用 RELEASE,写,或类似的。处理这种保护的机制是什么?
请您参考如下方法:
设备驱动程序之上的内核层会跟踪存在多少对打开文件的引用,并且在所有这些引用都已关闭之前不会调用释放函数。这在 LDD3 中有一些记录:http://tjworld.net/books/ldd3/#TheReleaseMethod
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。