OracleSolaris 11.2 - getinfo入口点和多线程访问

时间:2015-07-06 21:08:20

标签: multithreading mutex solaris device-driver opensolaris

我刚开始实现第一个Solaris设备驱动程序。在实现getinfo入口点例程时,我们是否必须关心不同的内核线程可以调用它?通常,此函数会更新每个实例的软状态数据结构,并且在多线程访问的情况下,结构必须受到互斥锁的保护。

所以我的问题是,如果getinfo回调可以被系统的多个线程调用,或者OS保证只有一个线程调用它? man getinfo对此并不十分清楚。

感谢。

2 个答案:

答案 0 :(得分:1)

我也找不到明确的答案。我建议保持安全和setting up a mutex。你将花费更少的时间来做这件事,而不是继续寻找明确的答案,证明同时召唤不会发生(或者总是安全的)。

最糟糕的情况是,每次通话都要花费一毫秒或更短的时间。最好的情况是,你可以保护自己免受内核恐慌或某些地方的损坏数据。在任何一种情况下,您都会学习更多关于编写Solaris设备驱动程序的知识。

这可能是Solaris文档的一个典型问题 - 像这样的东西可能隐藏在某个手册页的某个地方,但是如果你不知道看哪一个就找不到它。 (现在我已经回答了,只是观看:确实知道在哪里看的人会发布确定的答案......)

答案 1 :(得分:1)

基于对我可用资源的快速回顾:不,您不需要使用互斥锁来保护* getinfo()。