目录
1.mmc驱动结构体定义
static struct mmc_driver mmc_driver = {
.drv = {
.name = "mmcblk",
.pm = &mmc_blk_pm_ops,
},
.probe = mmc_blk_probe,
.remove = mmc_blk_remove,
.shutdown = mmc_blk_shutdown,
};
见下mmc_blk_probe的执行流程。
2.mmc总线结构体定义
static struct bus_type mmc_bus_type = {
.name = "mmc",
.dev_groups = mmc_dev_groups,
.match = mmc_bus_match,
.uevent = mmc_bus_uevent,
.probe = mmc_bus_probe,
.remove = mmc_bus_remove,
.shutdown = mmc_bus_shutdown,
.pm = &mmc_bus_pm_ops,
};
在mmc总线上进行驱动和设备的匹配,匹配成功调用mmc_bus_probe。
3.代码流程
module_init(mmc_blk_init)
mmc_blk_init //drivers\mmc\core\block

文章详细阐述了Linux内核中MMC驱动的结构体定义,包括mmc_driver和mmc_bus_type,以及mmc_blk_probe函数的执行流程。在mmc总线上注册驱动后,匹配过程会调用mmc_bus_probe。流程涉及mmc_blk_init、mmc_register_driver、blk_mq初始化等步骤,最终实现硬件队列的调度和请求处理。
最低0.47元/天 解锁文章
226

被折叠的 条评论
为什么被折叠?



