我想了解如何在使用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