免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: almeydifer
打印 上一主题 下一主题

用open打开字符设备时的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-07-07 16:13 |只看该作者
试了一下,就是动态分配有问题,这里我贴一下:

动态分配(有问题)
        
result = alloc_chrdev_region(&dev_num, minor_num, 1,"gnttab-dev");
if (result < 0){
    printk(KERN_WARNING "gnttab-dev: can't get major %d\n", major_num);
    goto err;
}

major_num = MAJOR(dev_num);
printk("the major_num is: %d\n",major_num);

//然后用dmesg,查到major_num后,输入相应mknod命令建立设备节点

静态分配(没问题):
dev_num = MKDEV(major_num, minor_num);
result = register_chrdev_region(dev_num, 1, "gnttab-dev");


两者的释放设备号的函数都是:
dev_t devno = MKDEV(major_num, minor_num);
unregister_chrdev_region(devno, 1);

两者加载模块后,在/proc/device文件中,都有相应的项所对应,

就是在mknod /dev/name c major_num 0之后,
两者的文件操作open一个成功,一个不成功。

求人指点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP