1.前言

本文主要介绍card下queue组件的主要流程,在介绍的过程中,将详细说明和queue相关的流程,涉及到其它组件的详细流程再在相关文章中说明。

2.主要数据结构和API

2.1 struct mmc_queue

Elemete Name struct mmc_queue
Path include/linux/mmc/queue.h
Responsiblities

mmc device的请求队列,用于处理mmc device请求

Attributions
  • card:struct mmc_card *类型,此请求队列所对应的mmc device
  • thread:struct task_struct *类型,用于循环处理mmc queue中的request
  • thread_sem:struct semaphore类型,用于控制mmc queue的信号量
  • flags:MMC_QUEUE_SUSPENDED  or MMC_QUEUE_NEW_REQUEST
  • issue_fn:request的处理函数
  • data:指向mmc_block_data
  • queue:struct request_queue *类型,与mmc_queue关联的request_queue
  • mqrq[2]:struct mmc_queue_req类型,存放当前的mmc request和prev request
  • mqrq_cur:struct mmc_queue_req *类型,代表当前的mmc request
  • mqrq_prev:struct mmc_queue_req *类型,代表前一个mmc request
Operations
  • int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock, const char *subname)

初始化mmc request queue,创建请求队列,并启动线程对queue中的request进行处理

  • void mmc_cleanup_queue(struct mmc_queue *mq)

停止处理request queue中的请求,并释放相关资源

  • void mmc_queue_suspend(struct mmc_queue *mq)

挂起请求队列,但是会等待未处理完的请求处理完毕

  • void mmc_queue_resume(struct mmc_queue *mq)

恢复之前挂起的请求队列

unsigned int mmc_queue_map_sg(struct mmc_queue *mq, struct mmc_queue_req *mqrq)

2.2 struct mmc_queue_req

Elemete Name struct mmc_queue_req
Path include/linux/mmc/queue.h
Responsiblities

mmc device的请求

Attributions
  • req:struct request *类型
  • brq:struct mmc_blk_request类型
  • sg:struct scatterlist *类型
  • bounce_buf:
  • bounce_sg:struct scatterlist *类型
  • bounce_sg_len:
  • mmc_active:struct mmc_async_req类型
  • cmd_type:enum mmc_packed_type类型
  • packed:struct mmc_packed *类型
Operations

TODO

Linux mmc framework2:基本组件之queue的更多相关文章

  1. Linux MMC framework2:基本组件之core

    1.前言 本文主要core组件的主要流程,在介绍的过程中,将详细说明和core相关的流程,涉及到其它组件的详细流程再在相关文章中说明. 2.主要数据结构和API TODO 3. 主要流程 3.1 mm ...

  2. Linux mmc framework2:基本组件之block

    1.前言 本文主要block组件的主要流程,在介绍的过程中,将详细说明和block相关的流程,涉及到其它组件的详细流程再在相关文章中说明. 2.主要数据结构和API 2.1 struct mmc_ca ...

  3. Linux MMC framework2:基本组件之host

    声明:本文很多内容和思路参考了http://www.wowotech.net/comm/mmc_host_driver.html,对原作者表示感谢! 1.前言 本文是Linux MMC framewo ...

  4. Linux mmc framework2:基本组件之mmc

    1.前言 本文主要mmc组件的主要流程,在介绍的过程中,将详细说明和mmc相关的流程,涉及到其它组件的详细流程再在相关文章中说明. 2.主要数据结构和API TODO 3. 主要流程 3.1 mmc_ ...

  5. Linux mmc framework1:软件架构

    [部分内容来自] http://www.wowotech.net/comm/mmc_framework_arch.html 1. 前言 由eMMC基础技术1:MMC简介中MMC.SD.SDIO的介绍可 ...

  6. Linux MMC 驱动子系统简述(源码剖析)

    1. Linux MMC 驱动子系统 块设备是Linux系统中的基础外设之一,而 MMC/SD 存储设备是一种典型的块设备.Linux内核设计了 MMC子系统,用于管理 MMC/SD 设备. MMC ...

  7. [MMC]Linux MMC/SD/SDIO驱动分析

    转自:http://www.cnblogs.com/cslunatic/p/3678045.html 一.SD/MMC/SDIO概念区分 SD(SecureDigital)与 MMC(Multimed ...

  8. linux驱动基础系列--Linux mmc sd sdio驱动分析

    前言 主要是想对Linux mmc子系统(包含mmc sd sdio)驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如平台驱动.块设备驱动.设备模型等也不进行详细说明原 ...

  9. 关于Linux开源项目基础组件make编译流程

     关于Linux开源项目基础组件make编译流程 非常多Linux开源项目都会用到编译出可运行文件的make.这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia. ...

随机推荐

  1. BZOJ 400题纪念

    应该是最后一次纪念了吧! 想当年,我可是发过"BZOJ 10题纪念"的人--那时候(一年前?)的自己真的好菜啊,只能说掌握了c++的基础语法的样子.当时觉得省选级别的BZOJ题是世 ...

  2. 解决Ubuntu17.04以上系统,yarn init报错

    安装yarn的时候老是装了个cmdtes的东西,官网是说删掉cmdtest重装就行,但是真没用. 正确的解决办法应该是像这位说的一样,先修改一下源,sudo apt update再下载,就能下载到真正 ...

  3. [luogu4462][异或序列]

    传送门 突然发现自己没整理过异或的知识,正好借这个题整理一下. 关于异或 (1)异或就是在二进制下,两数各个位置上的数,相同为0,不同为1,所得到的数,比如说4^7,4的二进制是100,7的二进制是1 ...

  4. 写入与读取第三方的 cookie - P3P: CP="CAO PSA OUR"

    应用的场景是这样: 在 a.com 页面显示一个 来自b.com的一张图片 a.com/test.html 的内容: <img src=b.com/a.jpg> 但需求是,当用户访问 b. ...

  5. 【bzoj5161】最长上升子序列 状压dp+打表

    题目描述 现在有一个长度为n的随机排列,求它的最长上升子序列长度的期望. 为了避免精度误差,你只需要输出答案模998244353的余数. 输入 输入只包含一个正整数n.N<=28 输出 输出只包 ...

  6. Grafana的基本使用

    Grafana的基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 简单的来说,Grafana 是基于JS开发的,功能齐全的度量仪表盘和图形编辑器,帮助开发人员发现问题的工具. ...

  7. Linux下Shell去除空行的方法

    1.用grep命令 grep -v “^$” 文件名 2.用sed命令 cat 文件名 | sed ‘/^$/d' 3.用awk命令 cat 文件名 | awk ‘{if($0!=”")pr ...

  8. Swift真机调试时报错dyld: Library not loaded: @rpath/libswiftCore.dylib

    dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/mobile/Containers/ ...

  9. python---redis在windows安装以及测试

    手册以及下载地址http://www.runoob.com/redis/redis-install.html,以及启动和测试 启动服务端(进入项目目录下: redis-server.exe redis ...

  10. windows开启powershell在此系统中禁止执行脚本

    首次在计算机上启动 Windows PowerShell 时,现用执行策略很可能是 Restricted(默认设置). Restricted 策略不允许任何脚本运行.若要了解计算机上的现用执行策略,请 ...