当写入访问受seqlock保护的共享资源时,写入者必须在进入关键部分之前获得排他锁。因此,与自旋锁一样,使用seqlock进行写访问具有诸如* _irqsave和* _bh之类的常见变体是有意义的。但是LDD3(第128页)说:
如果可以从中断处理程序访问seqlock,则应改用IRQ安全版本:
unsigned int read_seqbegin_irqsave(seqlock_t *lock,unsigned long flags); int read_seqretry_irqrestore(seqlock_t *lock,unsigned int seq,unsigned long flags);
据我了解,由于它是为读者设计的,因此它可以自由访问共享资源(仅在最后检查一致性并在需要时重试),因此可以通过调度程序或硬件中断读取访问打断。我想念什么吗?谢谢。