我编写了一个内核模块,它在 /proc/ 中创建一个条目并执行一些其他任务。我想修改现有的内核模块以检查我的模块是否正在运行并根据它执行一些语句(或者在它没有运行的情况下执行其他语句)
关于如何做到这一点的任何建议?
我编写了一个内核模块,它在 /proc/ 中创建一个条目并执行一些其他任务。我想修改现有的内核模块以检查我的模块是否正在运行并根据它执行一些语句(或者在它没有运行的情况下执行其他语句)
关于如何做到这一点的任何建议?
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);