现在的位置: 首页 > 综合 > 正文

linux nand flash驱动的一点理解

2013年12月13日 ⁄ 综合 ⁄ 共 396字 ⁄ 字号 评论关闭

1、通过自旋锁的方式来获得与设置flash的状态。在加锁后,若if (!chip->controller->active) 成立,即不活动,则chip->controller->active = chip;将其的活动状态变为本flash,并且如果chip->state == FL_READY成立,即空闲则将其设置为我们需求的状态,再解锁,锁防止了在设置状态过程中被抢占。获取与配置flash状态在nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state)函数中完成。

    因为自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点很好地满足了对称多处理机器需要的锁定服务。在单处理器上,自旋锁仅仅当作一个设置内核抢占的开关。如果内核抢占也不存在,那么自旋锁会在编译时被完全剔除出内核。

抱歉!评论已关闭.