Multithreading OracleSolaris 11.2--getinfo入口点和多线程访问
我正在开始实现第一个Solaris设备驱动程序。在实现Multithreading OracleSolaris 11.2--getinfo入口点和多线程访问,multithreading,mutex,solaris,device-driver,opensolaris,Multithreading,Mutex,Solaris,Device Driver,Opensolaris,我正在开始实现第一个Solaris设备驱动程序。在实现getinfo入口点例程时,我们是否需要注意不同的内核线程可以调用它?通常,此函数会更新每个实例的softstate数据结构,如果是多线程访问,则该结构必须受到互斥的保护 所以我的问题是,系统的多个线程是否可以调用getinfo回调,或者操作系统保证只有一个线程调用它?mangetinfo对此不是很清楚 谢谢。我也找不到明确的答案。我建议你要安全和健康。你会花更少的时间去做这件事,而不是继续寻找一个明确的答案来证明不能同时打电话(或者总是安全
getinfo
入口点例程时,我们是否需要注意不同的内核线程可以调用它?通常,此函数会更新每个实例的softstate数据结构,如果是多线程访问,则该结构必须受到互斥的保护
所以我的问题是,系统的多个线程是否可以调用getinfo
回调,或者操作系统保证只有一个线程调用它?mangetinfo
对此不是很清楚
谢谢。我也找不到明确的答案。我建议你要安全和健康。你会花更少的时间去做这件事,而不是继续寻找一个明确的答案来证明不能同时打电话(或者总是安全的) 最糟糕的情况是,你每次通话的花费不到一毫秒。最好的情况是,您已经保护自己免受内核恐慌或某个地方的数据损坏。在这两种情况下,您都会学到更多关于编写Solaris设备驱动程序的知识
这可能是Solaris文档的一个典型问题—类似的内容可能隐藏在某个手册页的某个地方,但如果您不知道要查看哪一个,则无法找到它。(现在我已经回答了,请注意:知道去哪里看的人将发布最终答案…基于对我可用的源代码的快速回顾:不,你不需要使用互斥锁来保护*getinfo()