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. 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包

    点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...

  2. 使用nagios监控ssl证书过期时间

    1.编写监控脚本. # vim check_ssl_expiry.sh #!/bin/bash STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 Host=$1 ...

  3. eclipse启动速度优化

    1. 在eclipse.ini文件中添加如下参数(红色部分) -startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.ja ...

  4. linux command ------ tar

    -c: compress archives -x:decompress archives -t:check archives -z:whether it has the attribute of gz ...

  5. 百度echart初用总结

    1.先下载echarts.js.我在百度下载的是 echarts-2.2.7 (from Baidu).压缩包里面的build->dist中的echarts.js或者echarts-all.js ...

  6. C# TextBox猜想输入和历史记录输入

    什么是猜想输入 当我们在使用查询应用时,输入某个关键字后文本框下面就会自动弹出跟此关键字相附的词组供我们选择,为我们节省了输入的时间,这就是猜想输入,例如:百度,谷歌,等等,如下图: 如上图所示,使用 ...

  7. Tensorflow-gpu版本安装

    目录 服务器选型 NVIDIA GPU驱动安装 cuda和cudnn的安装 cuda安装 cudnn的安装 tensorflow-gpu安装 最近给公司部署一套深度学习相关的环境,以tensorflo ...

  8. python---一个简单的socket

    server端: 1 创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type )      #family参数代表地址家族,可为 ...

  9. GTF文件

    一.GTF文件格式 Fields must be tab-separated. Also, all but the final field in each feature line must cont ...

  10. ansible-playbook 变量(vars)

    变量优先级: ansible-playbook中定义变量: - hosts: webservers vars: http_port: 80 ①.在host里定义变量 执行结果: ②.使用var_fil ...