add_disk() (本文纠错中)

本文探讨了在编写块设备驱动时,如何通过add_disk()将gendisk注册到内核,并分析了该函数在注册过程中涉及的设备号验证、block_device注册以及请求队列注册等步骤。重点在于block_device如何通过VFS创建inode,以便块设备能够被打开。add_disk()不是直接创建inode,而是在打开设备时才创建block_device对应的inode。
摘要由CSDN通过智能技术生成

我们在写块设备驱动程序的时候,注册并初始化一个gendisk后,要调用add_gendisk()注册到内核,供内核使用.

后面看到打开一个块设备的时候,我们看到 使用了标准的系统调用open(),参数中是inode,这个inode从何而来,看看add_disk到底干了啥哈.

初步猜测是 那个 块文件系统(一个伪文件系统),因为我们不会通过基本的VFS中的文件来Open一个块设备.

(伪文件系统也会集成到VFS中,至于和普通文件系统的区别,在http://blog.csdn.net/a954423389/article/details/6749293 中有解释,我们的确是通过VFS中的inode来打开的块设备)

add_disk中干了三件事情:

第一件:验证设备号

第二件:注册block_device(这个东西是块文件系统的元元素)

第三件:注册请求队列


可以看到第二件事是我们关注的,调用的是register_disk函数,我们跟进去看看:

 325/* Not exported, helper to add_disk(). */
 326void register_disk(struct gendisk *disk)
 327{
 328        struct block_device *bdev;
 329        char *s;
 330        int err;
 331
 332        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值