• 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

  • 相关阅读:
    10月9日学习日志
    10月2日学习日志
    11月3日学习日志
    10月5日学习日志
    10月6日学习日志
    10月7日学习日志
    11月4日学习日志
    AccessDatabaseEngine.exe 32位64安装失败问题
    国产各安卓系统接收消息在杀进程后
    SAP容差组
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/6728084.html
Copyright © 2020-2023  润新知