检查Linux内核模块是否正在运行

时间:2012-05-16 22:36:46

标签: linux kernel kernel-module

我编写了一个内核模块,它在/ proc /中创建了一个条目,并完成了其他一些任务。 我想修改一个现有的内核模块来检查我的模块是否正在运行并根据它执行一些句子(或者在它没有运行时执行其他句子)

有关如何执行此操作的建议吗?

1 个答案:

答案 0 :(得分:4)

kernel/module.c提供的功能可能会满足您的需求;首先需要锁定module_mutex,然后使用模块名称调用find_module()。结果将是指向描述命名模块的struct module的指针 - 如果未加载模块,则为NULL

/* Search for module by name: must hold module_mutex. */
struct module *find_module(const char *name)
{
        struct module *mod;

        list_for_each_entry(mod, &modules, list) {
                if (strcmp(mod->name, name) == 0) 
                        return mod;
        }
        return NULL;
}
EXPORT_SYMBOL_GPL(find_module);