4

私は単純なカーネルモジュールに取り組んでおり、コマンドラインから引数を取ります。私がやりたいのは、モジュールをロードする前にそれらの引数をチェックすることです。

引数をチェックして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
}
4

1 に答える 1

2

Linuxカーネルモジュールで作業していると思います。

正の戻り値は、それでも成功と解釈できます。一般的な方法は、あなたの場合-error_code、エラーで戻ることです。-EINVAL

于 2012-09-26T04:36:23.970 に答える