Linux系统内核的同步机制-自旋锁(2)
文章作者 100test 发表时间 2007:03:14 16:33:07
来源 100Test.Com百考试题网
该宏类似于spin_lock_irqsave,只是该宏不保存标志寄存器的值。禁止本地中断并获取指定的锁
该宏在得到自旋锁的同时失效本地软中断。
该宏释放自旋锁lock,它与spin_trylock或spin_lock配对使用。如果spin_trylock返回假,表明没有获得自旋锁,因此不必使用spin_unlock释放。
CODE:spin_unlock_irqrestore(lock, flags) |
该宏释放自旋锁lock的同时,也恢复标志寄存器的值为变量flags保存的值。它与spin_lock_irqsave配对使用。
CODE:spin_unlock_irq(lock) |
该宏释放自旋锁lock的同时,并激活本地中断。它与spin_lock_irq配对应用。
CODE:spin_unlock_bh(lock) |
该宏释放自旋锁lock的同时,也使能本地的软中断。它与spin_lock_bh配对使用。
CODE:spin_trylock_irqsave(lock, flags) |
该宏如果获得自旋锁lock,它也将保存标志寄存器的值到变量flags中,并且失效本地中断,如果没有获得锁,它什么也不做。
因此如果能够立即获得锁,它等同于spin_lock_irqsave,如果不能获得锁,它等同于spin_trylock。如果该宏获得自旋锁lock,那需要使用spin_unlock_irqrestore来释放。
CODE:spin_trylock_irq(lock) |
该宏类似于spin_trylock_irqsave,只是该宏不保存标志寄存器。如果该宏获得自旋锁lock,需要使用spin_unlock_irq来释放。
CODE:spin_trylock_bh(lock) |