繁体   English   中英

在运行时检查Linux内核配置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM