【发布时间】:2014-02-26 04:04:13
【问题描述】:
我已经用 rt 补丁修补了一个 linux 内核 3.2,然后安装了它。现在在 GRUB 菜单中,我可以选择内核,它还包含后缀 -rt。但我仍然不确定它是否真的具有实时功能。有没有办法找出它是实时内核还是普通的香草内核? 进一步根据 rtwiki 中的示例,它会告知我们是使用香草还是 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/kernel 的一个名为 realtime 的文件,但当我使用 rt 补丁修补我的内核时没有创建此类文件。
【问题讨论】:
-
uname -r将显示内核版本。 -
@rakib ya 即使它在后缀中显示 rt,但这是我使用 enogh 实时安装的方法。现在有什么办法可以激活实时内核
-
因为当我尝试运行实时程序时,我收到类似“sched_setscheduler failed: Operation not allowed”的错误。
-
@user3351066 我认为这就足够了,正如@rackib 所说,您可以使用
uname -r进行检查,这样您就会得到-rt**后缀`,例如uname -a Linux krachkiste 2.6.18-rt5 #3 PREEMPT Thu Oct 06 14:28:47 CEST 2006 i686 GNU/Linux -
@user3351066 另请注意,您必须启用
CONFIG_PREEMPT_RT并按照以下屏幕截图pengutronix.de/images/rt-wiki/menuconfig1.PNG 和pengutronix.de/images/rt-wiki/menuconfig1.PNG 和pengutronix.de/images/rt-wiki/menuconfig1.PNG 进行一些其他配置
标签: linux linux-kernel