在 Linux 内核中使用 FPU 假设 FPU 块包含kernel_fpu_begin
和kernel_fpu_end
功能。第一个看起来像这样:
41 static inline void kernel_fpu_begin(void)
42 {
43 WARN_ON_ONCE(!irq_fpu_usable());
44 preempt_disable();
45 __kernel_fpu_begin();
46 }
如果 FPU 由于以下原因无法使用,内核会发出警告:
64 bool irq_fpu_usable(void)
65 {
66 return !in_interrupt() ||
67 interrupted_user_mode() ||
68 interrupted_kernel_fpu_idle();
69 }
70 EXPORT_SYMBOL(irq_fpu_usable);
那么,我们不能在中断上下文中使用 FPU 是对的吗?
如果是,我想知道为什么我们不能?