linux 块设备驱动,使用的时候出了问题,帮忙看下

2019-07-16 09:20发布

想写一个极其简单的块设备驱动来上手,于是就照着网上的例子写了一个框架,中间的队列任务完全没有处理。
编译成功之后insmod 模块,可以在lsmod里找到对应的模块项,说明register_blkdev成功了,但是,却在/dev下找不到对应的模块,这是因为少注册了什么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
弧度
1楼-- · 2019-07-16 11:49
下面是初始化的代码,其中blk_queue_hardsect_size它好像不支持我的内核就注释掉了,直接在PC上测的,内核版本 3.13.0-24-generic
  1. static int __init block_module_init(void)
  2. {
  3. if(!register_blkdev(BLK_MAJOR,BLK_DEV_NAME))
  4. {
  5. major=BLK_MAJOR;
  6. printk(KERN_ALERT"REGISTER succeed ");
  7. }else
  8. {
  9. return -EBUSY;
  10. }
  11. gd=alloc_disk(1);
  12. spin_lock_init(&lock);
  13. gd->major=major;
  14. gd->first_minor=0;
  15. gd->fops=&blk_ops;


  16. gd->queue=blk_init_queue(blk_request_fnc,&lock);
  17. snprintf(gd->disk_name,32,"blk%c",'a');
  18. //blk_queue_hardsect_size(gd->queue,512);


  19. set_capacity(gd,32);
  20. add_disk(gd);
  21. printk(KERN_ALERT"gendisk init success! ");
  22. return 0;
  23. }
复制代码
zhou2sheng
2楼-- · 2019-07-16 17:06
@吴鉴鹰 吴老师帮忙看看程序呗
gary721400
3楼-- · 2019-07-16 18:18
 精彩回答 2  元偷偷看……
弧度
4楼-- · 2019-07-16 20:25
呼叫@@吴鉴鹰 吴老师

一周热门 更多>