我想了解如何在使用gcc编译时禁用内核模块的代码优化。 我试着让编译指示这样如何防止内核模块中的gcc优化?
#pragma optimize("",off)
void rt_ct_use_cpu(unsigned long long n_cicle){
unsigned long long i;
for(i=0;i<n_cicle;i++);
}
#pragma optimize("",on)
但是,编译器会发出警告说,它会忽略这些编译指示。我也试图使该避免编译器滚动循环像
void rt_ct_use_cpu(unsigned long long n_cicle){
unsigned long long i;
unsigned long long time=0;
unsigned long long timebase = rt_get_cpu_time_ns();
for(i=0;i<n_cicle;i++) {
time += rt_get_cpu_time_ns();
time -= timebase;
}
}
但在这种情况下,它并不重要多久是cicle东西(有多大n_cicle)程序将运行总是相同数量的时间(几毫秒)
你能帮我吗?
你能用-O0编译这些文件吗? – Michael 2012-07-16 09:15:50
或者,如果您真正需要忙碌循环,请参阅本页的第7.3.1.1节http://www.makelinux.net/ldd3/chp-7-sect-3。如果您只是想延迟执行一段时间,则在大多数情况下最好使用延迟/休眠功能。 – Michael 2012-07-16 09:32:26
你真棒!使用延迟功能的解决方案非常出色!非常感谢你! – user1528368 2012-07-16 13:08:52