【问题标题】:OracleSolaris 11.2 -- getinfo entry point and multi-thread accessOracleSolaris 11.2 -- getinfo 入口点和多线程访问
【发布时间】:2026-01-07 02:45:02
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: multithreading mutex solaris device-driver opensolaris


    【解决方案1】:

    我也找不到明确的答案。我建议安全并setting up a mutex。您将花费更少的时间来做这件事,而不是继续寻找一个明确的答案来证明同时呼叫不会发生(或始终是安全的)。

    在最坏的情况下,每次通话花费一毫秒或更短的时间。最好的情况是,您已经保护自己免受内核恐慌或某处损坏的数据的影响。无论哪种情况,您都可以了解更多关于编写 Solaris 设备驱动程序的知识。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】: