本文共 1292 字,大约阅读时间需要 4 分钟。
通用块层 generic_make_request 是通用块层的入口点
注册块设备 register_blkdev 预定主设备号。
aio_read generic_file_aio_read
aio_write blkdev_file_aio_write
compate-ioctl compat_blkdev_ioctl
writev generic_file_wrtie_nolock
sendfile generic_file_sendfile
2. 预定主设备号 register_blkdev
3. 初始化自定义设备,alloc_disk gendisk
5. 初始化块设备操作表 gendisk的fops
7. 设置中断处理程序 request_irq (主要调用end_thatA_request_first end_that_request_last)
策略例程: gendisk-》rq-》request_fn
generic_make_request 是通用块层向 io 调度交互的主要接口函数。
queue_request request ---io调度层
blkdev_readpage-》block_read_full_page-》submit_bh-》submit_bio-》generic_make_request 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/