我正在学习编写我的第一个 Linux 字符驱动程序,但似乎无法使其按预期工作。
驱动模块的 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 调用已进行。
我看到了一些相关的问题,但答案并没有解决我看似简单的问题。
我在做什么或期待错了什么?