在网上找到解决办法有两种,手动mknod创建一个设备或者自动生成一个设备。
具体代码如下
1. 添加头文件 #include
2. 修改函数int VirtualDisk_init(void),添加“自动创建设备”,代码如下:
struct class *virtual_disk_class; /*by yinhf.*/
/*设备驱动模块加载函数*/
int VirtualDisk_init(void)
{
int result;
dev_t devno = MKDEV(VirtualDisk_major, 0); /*构建设备号*/
/* 申请设备号*/
if (VirtualDisk_major) /* 如果不为0,则静态申请*/
result = register_chrdev_region(devno, 1, "VirtualDisk");
else /* 动态申请设备号 */
{
result = alloc_chrdev_region(&devno, 0, 1, "VirtualDisk");
VirtualDisk_major = MAJOR(devno);/* 从申请设备号中得到主设备号 */
}
if (result
return result;
/* 动态申请设备结构体的内存*/
Virtualdisk_devp = kmalloc(sizeof(struct VirtualDisk), GFP_KERNEL);
if (!Virtualdisk_devp) /*申请失败*/