我知道sirlock的irqsave版本会记下获取锁定时的中断状态并在释放锁定时恢复中断状态。
我的疑问是,假设使用irqsave变量进行锁定时,是否总共有10个中断向量并且其中2个处于禁用状态(假设设备驱动程序已禁用这两个中断向量)。 spin_lock_irqsave()
的flag
参数是否记下中断状态并在恢复期间仅启用8个中断?如果在状态保存到flag
参数中后,其他CPU启用了这2个禁用的中断怎么办?
答案 0 :(得分:2)
spin_lock_irqsave
函数不会屏蔽和取消屏蔽特定的中断源。它禁用了调用处理器上所有可屏蔽中断的处理。中断自旋锁会创建不可中断的关键代码区域。