gcc是否优化了内核代码?

时间:2013-01-20 07:58:18

标签: optimization gcc linux-kernel kernel

我在struct thread_info中添加了一个变量来计算某个事件。 这是在客户操作系统中完成的 在执行虚拟机的过程中,我时不时地从我的主机中读取这些变量 我已经观察到有时候我得到了预期的值,但有时我会读取垃圾值。我认为GCC正在优化我的变量,而我正在读取的内存处于垃圾状态。
我想知道可能的预防方法。
turnig关闭内核的GCC优化是不可能的,因为我的目标是根据我计算的事件加速虚拟机。
    #pragma optimize("",off)
使它效率降低因为那时我将把我的事件计数代码(只有2行)分解成一个函数。我计算的这个事件经常发生 有没有#pragma技术我可以使用?
使我的变量volatile变得有帮助吗?

由于

1 个答案:

答案 0 :(得分:3)

使变量volatile将阻止GCC优化它们。您不需要完全禁用优化。

但是,您可能需要处理因内核可能仍在更新时尝试从结构中读取而导致的竞争条件。我不知道你在VM环境中如何做到这一点。也许你正在使用的虚拟机管理程序提供了一些特殊的访客主机通信机制。例如,VMware有VMCI