zoukankan      html  css  js  c++  java
  • Linux mmc framework2:基本组件之queue

    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

  • 相关阅读:
    canvas 动画库 CreateJs 之 EaselJS(下篇)
    canvas 动画库 CreateJs 之 EaselJS(上篇)
    kafka消息的可靠性
    Gym 100851A Adjustment Office (思维)
    UVaLive 6854 City (暴力)
    UVaLive 6853 Concert Tour (DP)
    UVaLive 6847 Zeroes (找规律,水题)
    UVa 1645 Count (递推,数论)
    CCF 201509-3 模板生成系统 (STL+模拟)
    CCF 201509-2 日期计算 (水题)
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/6728084.html
Copyright © 2011-2022 走看看