- 论坛徽章:
- 0
|
试了一下,就是动态分配有问题,这里我贴一下:
动态分配(有问题)
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一个成功,一个不成功。
求人指点 |
|