procエントリを作成しようとしています。 私はinit_module関数は、以下のdmesgがprintk文を表示していません
int init_module()
{
printk(KERN_INFO "proc2:Module Loaded\n");
proc_entry=proc_create_data(proc_name,0644,NULL,&fops,NULL);
if(proc_entry==NULL)
{
printk(KERN_INFO "proc2:Error registering proc entry");
}
else
{
printk(KERN_INFO "proc2:Proc Entry Created");
}
return 0;
}
以下のようなプログラムの
void cleanup_module()
{
printk(KERN_INFO "proc2:module unloaded");
remove_proc_entry(proc_name,proc_entry);
}
残りは変数の定義とコールバック関数を含むクリーンアップ方法です。
このプログラムをコンパイルすると、コンパイルがうまくいきます。 insmod
を使用している場合は、私に返信しません。 lsmod
は、私のモジュールとそのモジュールが使用しているものをリストしています(何が分かっていないか)。 dmesg
には上記のprintkメッセージは表示されません。
ここで何が間違っているのか教えていただけますか?
驚くべきことに、KERN_INFOメッセージだけでなく、 echo "7">/proc/sys/kernel/printk –
"7"はKERN_DEBUGからKERN_EMERGまでのすべての種類のログを表示することができるので、KERN_INFOに特有のものではありません。 – Wayne
私は、ユーザーがrootの場合にのみ成功すると付け加えたいと思います。そうでない場合、リダイレクトは失敗します。リダイレクションは '|それを動作させるためにsudo tee ' – russoue