我用rt补丁修补了linux内核3.2,然后安装了它。现在在GRUB菜单中,我可以选择内核并且它还包含后缀-rt,但是我仍然不确定它是否真的具有实时功能。有没有办法知道它是实时内核还是普通的香草内核?
进一步以rtwiki中的一个例子为例,它通知我们使用的是vanilla还是rt preempt内核。

#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/kernel中名为realtime的文件,但是当我用rt补丁修补内核时,没有创建这样的文件。

最佳答案

real time scheduler和各种其他依赖的内核选项的存在使内核实时。如果这是源中选择的默认计划程序,则它是实时的。您可以在源代码中放入一些printfs来检查是否正在执行该代码,并使用dmesg进行检查。
您需要使用kgdb或其他调试工具调试内核,以了解为什么会出现错误。

关于linux - 如何查找正在使用的内核是否是实时的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22031499/

10-11 22:53
查看更多