Linux内核4.14版本——mmc core(10)——mmc core主模块(6)mmc请求相关

目录

1. 数据结构说明

1.1 struct mmc_command

1.2 struct mmc_data

1.3 struct mmc_request

1.4 struct mmc_async_req

2. 重要函数

2.1 mmc_wait_for_req

2.1.1 mmc_start_request

2.1.2 mmc_mrq_prep

2.1.3 __mmc_start_request

2.2 mmc_request_done

2.3 mmc_wait_for_cmd

2.4 mmc_start_areq(重要)

2.4.1 mmc_finalize_areq

2.4.2 __mmc_start_data_req


分成同步的mmc请求和异步的mmc请求。差别如下:

1、流程上的差别:
(1)会阻塞的处理流程:
mmc_wait_for_req
——》__mmc_start_req // 发起请求
————》init_completion(&mrq->completion);  
————》mrq->done = mmc_wait_done
————》mmc_start_request(host, mrq);   // 实际发起请求的操作
——》mmc_wait_for_req_done   // 阻塞等待请求处理完成
——》返回

(2)不阻塞等待该命令的处理流程:
(注意:并不是说调用这个接口并不会阻塞,而是不会为了等待当前请求处理完成而阻塞,但是可能会等待上一次请求处理完成而阻塞)
mmc_start_areq
——》mmc_finalize_areq     // 阻塞等待上一次的请求处理
——》__mmc_start_data_req   // 发起异步请求
————》mrq->done = mmc_wait_data_done
————》mmc_start_request   // 实际发起请求的操作
——》返回

最后都是调用了mmc_start_request使host向MMC发起请求。

1. 数据结构说明

      一个mmc请求分成两部分内容,分别是命令部分和数据部分。

1.1 struct mmc_command

struct mmc_command {
	u32			opcode;// 命令的操作码&
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值