SDカードからの読み取りがvfs_readを使用して行われたときに、誰がkthreadデーモンをウェイクアップするかを知りたいです。コードフローによると、kthreaddはmmcqd(mmc_queue_thread)をウェイクアップし、SDドライバーへの読み取り/書き込み要求を処理します。
ここで直面している問題は、SDカードへのvfs_readがUSBマスストレージドライバーによって呼び出されても、読み取りがmmc_queue_threadに進まないことです。これにより、SDカードの古い内容がPCに表示されます。
これは、sdhci_send_command()から生成されたvfs_readの後のカーネルスタックです。------------[ここでカット]------------警告:/vobs/iandroid/src/kernel/drivers/mmc/host/mx_sdhci.c: 495 sdhci_send_command + 0x120 / 0x758()リンクされているモジュール:g_mot_android mxc91341_oh_udc sipcttydrv aplogger coredump bploader sipcdrv mu_drv [](dump_stack + 0x0 / 0x14)from [](warn_slowpath + 0x68 / 0x84
[<c009cd3c>] (warn_slowpath+0x0/0x84) from [<c0249000>] (sdhci_send_command+0x120/0x758)
r3:00000033 r2:00000000
r7:c6605f04 r6:c6605f5c r5:c65305c0 r4:c0409510
[<c0248ee0>] (sdhci_send_command+0x0/0x758) from [<c0249a98>] (sdhci_request+0x188/0x1bc)
[<c0249910>] (sdhci_request+0x0/0x1bc) from [<c0240834>] (mmc_wait_for_req+0x110/0x128)
r8:c656f870 r7:c6605dc8 r6:00000000 r5:c6530400 r4:c6605ef0
[<c0240724>] (mmc_wait_for_req+0x0/0x128) from [<c02479f8>] (mmc_blk_issue_rq+0x1f4/0x7b0)
r7:c642ae00 r6:00000000 r5:c64daeac r4:c64daea0
[<c0247804>] (mmc_blk_issue_rq+0x0/0x7b0) from [<c0248464>] (mmc_queue_thread+0x134/0x154)
[<c0248330>] (mmc_queue_thread+0x0/0x154) from [<c00b2e88>] (kthread+0x54/0x80)
r8:00000000 r7:00000000 r6:00000000 r5:c0248330 r4:fffffffc
[<c00b2e34>] (kthread+0x0/0x80) from [<c009f3a8>] (do_exit+0x0/0x738)
r5:00000000 r4:00000000
---[ end trace 24b57c573e7a44e3 ]---