【发布时间】:2010-06-09 14:17:37
【问题描述】:
您会在 Linux 中的哪个位置查找在上下文切换中保存了哪些寄存器?例如,我想知道在内核模式驱动程序代码中使用 FP 或向量寄存器是否安全(主要对 x86-64 和 ARM 感兴趣,但我希望得到与架构无关的答案)。
【问题讨论】:
-
您想使用 FP 寄存器将信息传递回用户模式进程吗?
-
想必,上下文切换不是必须保存所有寄存器吗?否则你永远不能使用它不保存的寄存器,因为你永远不知道它的值什么时候会被覆盖。
-
@Justin:许多操作系统(包括 windows 和 linux)仅在 FPU/SSE 寄存器第一次被进程使用后才保存它们。这是因为这是一个昂贵的过程,相对来说很少见。
-
我不想将信息传递回用户模式;我想知道我是否可以在我的驱动程序中使用额外的寄存器(或做 FP 数学)。
-
@Justin:如果 FPU 状态未初始化,则抛出异常。操作系统捕捉到这个,设置一个“这个线程使用 FPU 标志”,初始化 FPU 状态,并恢复线程。