使用IDR机制管理MMC的宿主机
一 使用IDR机制来检索宿主机
使用步骤:
定义一个idr对象和一个自旋锁
static DEFINE_IDR(mmc_host_idr);
static DEFINE_SPINLOCK(mmc_host_lock);
为idr分配内存
if (!idr_pre_get(&mmc_host_idr, GFP_KERNEL))
return NULL;
申请一个mmc_host结构的空间加上一个额外的空间
host = kzalloc(sizeof(struct mmc_host) + extra, GFP_KERNEL);
if (!host)
return NULL;
在加锁的保护下,分配id号,将将ID号与指针关联.
spin_lock(&mmc_host_lock);
err = idr_get_new(&mmc_host_idr, host, &host->index);
spin_unlock(&mmc_host_lock);
if (err)
goto free;
释放IDR内存
spin_lock(&mmc_host_lock);
idr_remove(&mmc_host_idr, host->index);
spin_unlock(&mmc_host_lock);