LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4435|回复: 2

求:devfs_register()和register_chrdev()的区别

[复制链接]
发表于 2006-11-25 19:38:00 | 显示全部楼层 |阅读模式
static int __init demo_init(void)
{
                              int result;

        wbuff = kmalloc(BUFFSIZE, GFP_KERNEL);
        rbuff = kmalloc(BUFFSIZE, GFP_KERNEL);
        result = register_chrdev(DEMO_MAJOR, "demo", &demo_fops);

        if(result < 0) {
                printk(KERN_ERR "Cannot register demo device.\n");
                kfree(wbuff);
                kfree(rbuff);
                return -EIO;
        }
    if(DEMO_MAJOR==0)
            DEMO_MAJOR = result;
        /*devfs*/
#ifdef CONFIG_DEVFS_FS
    devfs_demo_dir = devfs_mk_dir(NULL, "demo", NULL);   //make demo device directory
    devfs_demoraw = devfs_register(devfs_demo_dir, "0", DEVFS_FL_DEFAULT,
                    DEMO_MAJOR, DEMO_MINOR, S_IFCHR | S_IRUSR | S_IWUSR,
                    &demo_fops, NULL);   //register demo device "0"
#endif
           /* some furthertreatment for this case */
       
        return 0;
}

以上是一个驱动程序的初始化函数,在此函数前面已经定义了“CONFIG_DEVFS_FS”宏,请问高手为什么要用devfs_register()和register_chrdev()两个注册??只用register_chrdev()函数不就可以动态的选定一个主设备号吗?为什么还要用devfs_register()函数再注册一变???这两个注册函数有什么区别阿???谢谢……
发表于 2006-12-21 21:14:24 | 显示全部楼层
我可以给你讲讲,到我宿舍来!哈哈!
回复 支持 反对

使用道具 举报

发表于 2006-12-26 11:48:34 | 显示全部楼层
register_chrdev()的作用是注册设备,是老方法。
devfs_register()也是用来注册设备的,它的好处是在装载和卸载模块时,不需要运行脚本创建设备文件,用这个方法驱动程序会自主的管理它的设备文件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表