是否有任何C函数可以检查是否设置了Linux内核配置选项(CONFIG_AAAA
文件中的/boot/config-
选项)?
或者我必须自己开发它。
答案 0 :(得分:1)
经过长时间的搜索没有结果,我自己开发了一个功能。这是代码:
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;
答案 1 :(得分:0)
我能想到的唯一方法是按照kernel/configs.c
中的方法创建自己的方法(这是创建/proc/config.gz的代码)。