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. 【ARC065E】??

    Description 链接 Solution 问题其实就是从一个点出发,每次可以走与其曼哈顿距离恰好为一个常数\(d\)的点 显然不可能一一走完所有的边,这样复杂度下界至少是\(O(ans)\) 我 ...

  2. 洛谷 P1627 [CQOI2009]中位数 解题报告

    P1627 [CQOI2009]中位数 题目描述 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b.中位数是指把所有元素从小到大排列后,位于中间的数. 输入输出格式 输入格式 ...

  3. Java核心技术-并发

    多任务(multitasking):在同一时刻运行多个程序的能力. 并发执行的进程数目并不是由CPU数目制约的.操作系统将CPU的时间片分配给每一个进程,给人并发处理的感觉. 多线程程序在较低的层次上 ...

  4. kubernetes下的Nginx加Tomcat三部曲之一:极速体验

    在生产环境中,常用到Nginx加Tomcat的部署方式,如下图: 从本章开始,我们来实战kubernetes下部署上述Nginx和Tomcat服务,并开发spring boot的web应用来验证环境, ...

  5. ivew实现table的编辑保存追加删除

    ivew实现table的编辑 例子1 例子2

  6. java实现获取当前年月日 小时 分钟 秒 毫秒

    java代码实现如下 view source print?     /**      * 英文简写(默认)如:2010-12-01      */     public static String F ...

  7. jQuery基础 (一)——样式篇(jQuery选择器)

    一.选择器类型 id选择器 class选择器 元素选择器 层级选择器 全选择器(*选择器) 二.有几种方式可以隐藏一个元素: CSS display的值是none. type="hidden ...

  8. Centos7更改yum镜像源

    1. 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak 2.获取阿里yum源配置文 ...

  9. LINQ to SQL 模拟实现 ROW_NUMBER() OVER(ORDER BY ...) 的功能

    Ø  前言 本来是想使用 LINQ 实现类似 SQL: ROW_NUMBER() OVER(ORDER BY -) 的功能,但是貌似 LINQ 不支持,反正没找到解决办法,无奈使用了LINQ Sele ...

  10. 二、存储管理器--SDRAM

    2.1 硬件结构 2.1.1 硬件框图 CPU 通过存储管理器来读取 SDRAM 网卡 等外部设备,CPU不管外部设备是怎么样的,只是读存储管理器中的地址 CPU从0x30000000地址读取数据. ...