如果init_module()失败,如何强制退出?

时间:2012-09-25 02:12:06

标签: kernel-module

我正在研究一个简单的内核模块,我从命令行获取参数。我想要做的是在加载模块之前检查这些参数。

我检查了参数并返回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
}

1 个答案:

答案 0 :(得分:2)

我假设您正在使用Linux内核模块。

正回报值仍可被解释为成功。通常的做法是在出现错误时-error_code返回-EINVAL