sd卡读文件过程分析(一)(内核2.6.29,驱动goldfish)

本文通过分析file的读操作,探讨了在goldfish驱动中,如何从fat32文件系统的file_operations出发,进行读取操作。主要关注get_block调用获取块号以及bio = mpage_bio_submit(READ, bio)提交IO请求的过程,该步骤将操作转交给块设备驱动层完成从文件系统到驱动层的转换。" 136243116,5110923,Sora技术入门教程,"['通信技术', 'SORA', '无线通信', '协议学习', '技术解析']
摘要由CSDN通过智能技术生成

这段时间想弄懂mmc驱动的读写原理,一直在goldfish的驱动代码中乱撞。某天突然灵光一闪,要从文件系统开始分析。眼前一篇豁然开朗。跟踪过程记录如下:

首先是file的读操作。因为sd卡是fat32文件系统,找到fat32的file_operations:

 

const struct file_operations fat_file_operations = {

         .llseek         = generic_file_llseek,

         .read           = do_sync_read,

         .write          = do_sync_write,

         .aio_read       = generic_file_aio_read,

         .aio_write      = generic_file_aio_write,

         .mmap           = generic_file_mmap,

         ……
}
read操作先调用do_sync_read,然后在do_sync_read中调用generic_file_aio_read。
generic_file_aio_read中先判断是否可以direct to BIO。如果不能,进入读取页面的循环,这个循环中主要的函数是:
           do_generic_file_read(filp, ppos, &desc, file_read_actor);
这个函数也是读文件主要的操作函数。
进入do
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值