我正在研究一个简单的内核模块,我从命令行获取参数。我想要做的是在加载模块之前检查这些参数。
我检查了参数并返回1以指示init_module函数失败,以便在参数无效时不会加载内核模块。
问题是模块仍然加载,即使它没有通过参数检查(采用第一个if语句)。我键入sudo -f rmmod kernel_name
,它抱怨模块正忙。如果通过参数检查,如何加载模块?
int init_module(){
//check argument here
if(failed){
//arguments are not valid. Return 1 to indicate the failure of init_module
return 1;
}
else{
register hook function here
return 0;
}
}
void cleanup_module(){
unregister hook here
}
答案 0 :(得分:2)
我假设您正在使用Linux内核模块。
正回报值仍可被解释为成功。通常的做法是在出现错误时-error_code
返回-EINVAL
。