[英]Checking Linux kernel config at runtime
是否有任何C函数可以检查是否设置了Linux内核配置选项( /boot/config-
文件中的CONFIG_AAAA
选项)? 否则我必须自己开发。
经过长时间的搜索,没有结果,我自己开发了一个函数。 这是代码:
static int is_kconfig_set(const char *config) {
int ret = 0;
struct utsname utsname;
char pattern[BUFSIZ], buf[BUFSIZ];
FILE *fp = NULL;
if (uname(&utsname) == -1)
return 0;
memset(pattern, 0, sizeof(pattern));
memset(buf, 0, sizeof(buf));
sprintf(pattern, "%s=y", config);
sprintf(buf, "/boot/config-%s", utsname.release);
fp = fopen(buf, "r");
if (fp == NULL)
return 0;
while(fgets(buf, sizeof(buf), fp) != NULL) {
if (strncmp(buf, pattern, strlen(pattern)) == 0) {
ret = 1;
break;
}
}
fclose(fp);
return ret;
}
要检查是否设置了CONFIG_CPU_FREQ:
if (is_kconfig_set("CONFIG_CPU_FREQ"))
return 1;
return 0;
我能想到的唯一方法是按照kernel/configs.c
的方法创建自己的方法(这是创建/proc/config.gz的代码)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.