当我的代码在内核空间中执行时,是否可以冻结所有处理器执行代码?
我需要转储大量数据,我需要保证数据在执行代码时保持一致。
local_irq_save和friends仅禁用本地cpu ...
答案 0 :(得分:0)
我猜你在找big kernel lock (BKL)
之类的东西。但是,由于内核版本 2.6.39 ,因此无法使用此功能。
因此,您需要使用更精细的锁定版本,例如spin_lock_irqsave()
& spin_unlock_irqrestore()
,它们都会禁用本地cpu上的中断和抢占,直到锁定为止。
但是不建议长时间保持旋转锁。