drivers/MMC/core/core.c:473 [MMC_core]MMC_WAIT_for_req_done =p "%s":请求失败(CMD%u):%d、重试...\012" drivers/MMC/core/core.c:2278 [MMC_core]MMC_calc_max_discard =p "%s":计算的最大值 放弃扇区%u 以进行超时%u ms\012" drivers/MMC/core/core.c:999 [MMC_core]MMC_set...
*/voidmmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq){ DECLARE_COMPLETION_ONSTACK(complete); mrq->done_data = &complete; mrq->done = mmc_wait_done; mmc_start_request(host, mrq);if(host->index ==0)mmc_delay(10); wait_for_completion_io(&complete); } 开发者ID:S...
1、流程上的差别:(1)会阻塞的处理流程: mmc_wait_for_req ——》__mmc_start_req // 发起请求———》init_completion(&mrq->completion); ———》mrq->done = mmc_wait_done ———》mmc_start_request(host, mrq); // 实际发起请求的操作——》mmc_wait_for_req_done // 阻塞等待请求处理完成...
the request to be done (mmc_wait_for_req_done and mmc_wait_for_data_req_done). Also note that mmc_wait_for_data_req_done can return even when the request is not done (which allows the block driver to prepare a newly arrived request while still waiting for the previous request). This...
mrq->done_data = &complete; mrq->done = mmc_wait_done;mmc_start_request(host, mrq); wait_for_completion(&complete); } 开发者ID:DC07,项目名称:CustomKernelSource,代码行数:20,代码来源:core.c 示例2: mmc_wait_for_req ▼ /**
mmc_wait_for_req_done() 等待wait_for_completion_io(&mrq->completion); 看得出来这里面和读写流程的不同,在本次传输启动后,立刻同步等待中断到来。因为单次的CMD8命令并没有其他的循环处理,因此如果不再本次处理等待,将来也没有机会再进入同步等待阶段。
mmc_start_req(card->host, areq, (int *) &status); //mmc/core/core.c //传进来第2个参数名为mrq mmc_wait_for_data_req_done(host, host->areq->mrq, areq); //mmc/core/core.c //等待。退出条件:上一个请求结束或者本请求是新请求 ...
1、 首先它会执行到mmc_wait_for_data_req_done函数,等待上一次的命令的完成,如果上一次未完成就会将当前进程加入等待队列休眠,等待被唤醒。当上一次完成后会立即返回,并将上一次命令执行的状态返回给mmc_blk_issue_rw_rq。 2、if (host->areq) { err = mmc_wait_for_data_req_done(host, host->areq->...
mmc_wait_for_data_req_done-> mmc_blk_err_check host->ops->request mmc_queue_thread是在mmc_init_quene中起的线程,主要作用是完成上层发送的请求进行处理 blk_fetch_request 从请求队列中取出一个request issue_fn 由前面可知issue_fn在mmc_blk_probe->mmc_blk_alloc_req时将issue_rq初始化为mmc_blk_is...
>> requests (mmc_start_request) there are two that wait for >> the request to be done (mmc_wait_for_req_done and >> mmc_wait_for_data_req_done). Also note that >> mmc_wait_for_data_req_done can return even when the >> request is not done (which allows the block driver ...