初めての Linux char ドライバーの作成を学んでいますが、期待どおりに動作しないようです。
ドライバー モジュールの init および exit 関数のコードは次のとおりです。
static int __init one_init(void)
{
int result;
printk(KERN_DEBUG "In ones init call");
result = alloc_chrdev_region(&onedev, 0, 4, "one");
printk("Allocated device major: %d, first minor: %d",MAJOR(onedev),MINOR(onedev));
return 0;
}
static void __exit one_exit(void)
{
unregister_chrdev_region(onedev,4);
printk(KERN_DEBUG "In ones exit call");
}
/proc/devices
ドライバーをアンロードした後もデバイスが表示され、その終了関数は を呼び出しますunregister_chrdev_region
。
dmesg
コマンド出力は、ドライバーの init および exit 呼び出しが行われたことを示しています。
関連する質問をいくつか見ましたが、答えは一見単純な問題を解決しませんでした。
私は何をしているのか、間違っていると予想していますか?