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