1. mmc_attach_bus & mmc_detach_bus
主要功能:
mmc_attach_bus用于将分配一个mmc总线操作集给host。
mmc_detach_bus用于释放和host相关联的mmc总线操作集。
一些变量:
mmc_host->bus_ops,表示host的mmc总线操作集
mmc_host->bus_refs,表示host的mmc总线的使用者计数
mmc_host->bus_dead,表示host的mmc总线是否被激活,如果设置了bus_ops,那么就会被激活了
1.1 mmc_attach_bus
/*
* Assign a mmc bus handler to a host. Only one bus handler may control a
* host at any given time.
*/
void mmc_attach_bus(struct mmc_host *host, const struct mmc_bus_ops *ops)
{
unsigned long flags;
WARN_ON(!host->claimed);
spin_lock_irqsave(&host->lock, flags);
WARN_ON(host->bus_ops); // 不允许重复设置host的mmc总线操作集
WARN_ON(host->bus_refs); // 当mmc总线的使用者计数还存在时,不允许设置host的mmc总线操作集
host->bus_ops = ops; // 设置host的mmc总线操作集
host->bus_refs = 1;