3

我正在学习编写我的第一个 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 调用已进行。

我看到了一些相关的问题,但答案并没有解决我看似简单的问题。

我在做什么或期待错了什么?

4

1 回答 1

-1

在终端中使用“rmmod modulename”。这应该卸载模块并删除关联。

于 2013-02-24T06:22:34.087 回答