博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
块设备驱动程序
阅读量:4194 次
发布时间:2019-05-26

本文共 1292 字,大约阅读时间需要 4 分钟。

通用块层
常用数据结构: bio  
磁盘描述符 gendisk 
generic_make_request 是通用块层的入口点 
io调度层:
请求队列:request_queue 
请求描述符:request 
块设备:
block_device 
注册块设备 register_blkdev    预定主设备号。
块设备文件操作描述符表:
open  blkdev_open 
release blkdev_close 
llseek block_llseek 
read genric_file_read 
wrtie blkdev_file_write 
aio_read generic_file_aio_read 
aio_write blkdev_file_aio_write
mmap generic_file_mmap 
fsync block_fsync
ioctl block_ioctl 
compate-ioctl compat_blkdev_ioctl
readv generic_file_readv 
writev generic_file_wrtie_nolock
sendfile generic_file_sendfile 
块设备驱动程序注册流程:
1. 自定义驱动程序描述符
2. 预定主设备号   register_blkdev
3. 初始化自定义设备,alloc_disk   gendisk
4. 初始化gendisk
5. 初始化块设备操作表  gendisk的fops 
6. 分配和初始化请求队列
7. 设置中断处理程序   request_irq   (主要调用end_thatA_request_first  end_that_request_last)
8. 注册磁盘 add_disk 
9. 
策略例程: gendisk-》rq-》request_fn 
待补充
i/o 调度请求:
generic_make_request 是通用块层向 io 调度交互的主要接口函数。 
bio  ---通用块层
queue_request request    ---io调度层 
blkdev_readpage-》block_read_full_page-》submit_bh-》submit_bio-》generic_make_request
block_dev.c
static const struct address_space_operations def_blk_aops = {
.readpage
= blkdev_readpage,
.writepage
= blkdev_writepage,
.sync_page
= block_sync_page,
.write_begin
= blkdev_write_begin,
.write_end
= blkdev_write_end,
.writepages
= generic_writepages,
.releasepage
= blkdev_releasepage,
.direct_IO
= blkdev_direct_IO,
};

转载地址:http://mtloi.baihongyu.com/

你可能感兴趣的文章
巴菲特2021年致股东信披露重仓股名单
查看>>
苹果再因“降频门”遭遇集体诉讼,11.5万用户出拳
查看>>
3月起这些新规将实施:从事网络招聘服务应取得许可证
查看>>
让猫给人打工,猫咖是一门好生意吗?
查看>>
苹果神秘新iPhone首曝光,外形终于无槽点了!
查看>>
纯电动SUV哪吒U Pro即将上线:最高续航610公里
查看>>
跟谁学宣布独立调查结论:没有造假 盘后股价涨超8%
查看>>
五菱神车,昙花一现还是创造蓝海?
查看>>
全民“炒基”热:谁在为张坤疯狂?
查看>>
引入深国际、鲲鹏资本战略投资 苏宁易购复牌涨停
查看>>
手机价格要上涨?小米和Realme确认芯片短缺:高通交付延长至30周以上
查看>>
情怀奏不响民宿的狂想曲
查看>>
苹果iPhone 13有望提供1TB存储 但仅限高端机型
查看>>
会玩!格力公开“磁悬浮床垫”专利
查看>>
鸿蒙系统将登陆2亿台华为手机,“别的厂商想用,我们会支持!”
查看>>
ROG游戏手机5跑分曝光:全球首发18GB超大内存
查看>>
亚洲新首富出炉!富豪榜单大洗牌,马云3年来首次跌出中国前三
查看>>
沃尔沃XC40纯电版官宣降价至29.9万元起
查看>>
董明珠:建议个税起征点提高到一万元
查看>>
魅族预热魅族18系列:没有中杯 大杯起步
查看>>