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. Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家

    Stack Overflow 的数据科学家  David Robinson 发现,软件行业的分工让不同发达地区的程序员依赖于不同的编程语言.软件已经是一个全球性的行业,也有高端低端之分,最高端的是数据 ...

  2. 姿态角(Euler角):yaw pitch roll

    姿态角(Euler角):yaw pitch roll  

  3. 洛谷 P1076 寻宝 解题报告

    P1076 寻宝 题目描述 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共有\( ...

  4. 监控(3)进程通用shell

    #! /bin/bash proc_name="beam.smp" #进程名 proc_num() #查询进程数{ num=`ps -ef | grep $proc_name | ...

  5. luogu4849 寻找宝藏 (cdq分治+dp)

    设f[i]是已经走到i号点的值. 先要给第四维离散化.然后去重 第一维排序,第二维cdq分治,第三维cdq分治,第四维树状数组,找到满足j(x,y,z,w)<=i(x,y,z,w)的j,给i统计 ...

  6. 框架&样式表

    框架   <frameset rows上下拆分,cols左右拆分><fram src选择文件></frameset>. 样式表:“div style”写在body内 ...

  7. Hash碰撞 & 拒绝服务漏洞

    前段时间在网上看到的: http://www.baidu.com/s?wd=Hash%E7%A2%B0%E6%92%9E+++%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1% ...

  8. C++11并发——多线程lock_gurad ,unique_lock (三)

    http://www.cnblogs.com/haippy/p/3346477.html struct defer_lock_t {}; 该类型的常量对象 defer_lock(defer_lock ...

  9. apigateway-kong(五)集群搭建部署

    kong 集群将使得系统通过增加更多机器,从而实现水平扩展,承接更多的请求流量.它们将共享同样的配置且使用同一个数据库.kong 集群中的的所有节点都连接同一个数据库. 你需要在 kong 集群的上一 ...

  10. operator new,new operator,placement new的区别

    原文地址:http://www.cnblogs.com/jamesmile/archive/2010/04/17/1714311.html,在此感谢 C++中的operator new与new ope ...