2014-02-26 51 views
0

我用一個rt補丁修補了一個linux內核3.2,然後安裝了它。現在在GRUB菜單中,我可以選擇內核,並且它還包含後綴-rt。但我仍然不確定它是否具備實時功能。有沒有辦法找出它是實時內核還是普通的香草核? 進一步根據rtwiki中的一個例子,它告訴我們是否使用了一個vanilla或一個rt先佔內核。當我修改我的內核與RT補丁創建如何查找正在使用的內核是否爲實時

#include <string.h> 
#include <stdio.h> 
#include <sys/utsname.h> 
int main(int argc, char **argv) 
{ 
struct utsname u; 
int crit1, crit2 = 0; 
FILE *fd; 
uname(&u); 
crit1 = strcasestr (u.version, "PREEMPT RT"); 
if ((fd = fopen("/sys/kernel/realtime","r")) != NULL) { 
int flag; 
crit2 = ((fscanf(fd, "%d", &flag) == 1) && (flag == 1)); 
fclose(fd); 
} 
fprintf(stderr, "this is a %s kernel\n", 
(crit1 && crit2) ? "PREEMPT RT" : "vanilla"); 
} 

該代碼訪問的命名從SYS /內核的實時文件,但沒有這樣的文件。

+0

'uname -r'會顯示內核版本。 –

+0

@rakib雅甚至它顯示後綴rt,但是我用於實時安裝ENOGH的方法。現在有什麼需要做的,以激活實時內核 – Bas

+0

,因爲當我嘗試運行實時程序,我得到像「sched_setscheduler失敗:操作不允許」的錯誤。 – Bas

回答

1

real time scheduler和各種其他依賴內核選項的存在是使內核實時運行的原因。如果這是在源中選擇的默認調度程序,那麼它是實時的。您可以將一些printfs放在源代碼中,以檢查代碼是否正在執行,並使用dmesg進行檢查。

您需要使用kgdb或其他調試工具來調試內核,以瞭解爲什麼出現錯誤。

+0

亞生病檢查出來,謝謝! – Bas

相關問題