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

OracleSolaris 11.2 -- getinfo entry point and multi-thread access

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

所以我的问题是getinfo回调是否可以被系统的多个线程调用,或者OS保证只有一个线程调用它? man getinfo 不是很清楚

谢谢。

我也找不到明确的答案。我建议保持安全 setting up a mutex。与继续寻找证明不会同时调用(或始终安全)的明确答案相比,您花在这上面的时间更少。

最坏的情况是,每次调用花费一毫秒或更短的时间。最好的情况是,您已经保护自己免受内核恐慌或某处数据损坏的影响。在任何一种情况下,您都会学到更多有关编写 Solaris 设备驱动程序的知识。

这可能是 Solaris 文档中的一个典型问题 - 类似的内容可能隐藏在某个手册页的某处,但如果您不知道该看哪一个,就找不到它。 (现在我已经回答了,请注意: 知道去哪里找的人会 post 确定的答案...)

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