linux 块设备驱动,使用的时候出了问题,帮忙看下
时间:10-02
整理:3721RD
点击:
想写一个极其简单的块设备驱动来上手,于是就照着网上的例子写了一个框架,中间的队列任务完全没有处理。
编译成功之后insmod 模块,可以在lsmod里找到对应的模块项,说明register_blkdev成功了,但是,却在/dev下找不到对应的模块,这是因为少注册了什么?
编译成功之后insmod 模块,可以在lsmod里找到对应的模块项,说明register_blkdev成功了,但是,却在/dev下找不到对应的模块,这是因为少注册了什么?
下面是初始化的代码,其中blk_queue_hardsect_size它好像不支持我的内核就注释掉了,直接在PC上测的,内核版本 3.13.0-24-generic
- static int __init block_module_init(void)
- {
- if(!register_blkdev(BLK_MAJOR,BLK_DEV_NAME))
- {
- major=BLK_MAJOR;
- printk(KERN_ALERT"REGISTER succeed\n");
- }else
- {
- return -EBUSY;
- }
- gd=alloc_disk(1);
- spin_lock_init(&lock);
- gd->major=major;
- gd->first_minor=0;
- gd->fops=&blk_ops;
- gd->queue=blk_init_queue(blk_request_fnc,&lock);
- snprintf(gd->disk_name,32,"blk%c",'a');
- //blk_queue_hardsect_size(gd->queue,512);
- set_capacity(gd,32);
- add_disk(gd);
- printk(KERN_ALERT"gendisk init success!\n");
- return 0;
- }
请@吴鉴鹰 吴老师帮忙看看程序呗
注册节点了吗?
呼叫@@吴鉴鹰 吴老师
