1

当使用 vfs_read 从 SD 卡读取数据时,我想知道是谁唤醒了 kthread 守护进程。根据代码流,kthreadd 将唤醒 mmcqd (mmc_queue_thread),它将处理对 SD 驱动程序的读/写请求。

我在这里面临的问题是,虽然 USB 大容量存储驱动程序调用了对 SD 卡的 vfs_read,但读取不会继续到 mmc_queue_thread。这会导致 PC 上显示 SD 卡的旧内容。

这是从 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 ]---
4

0 回答 0