Linux系统内核的同步机制-自旋锁(2)

文章作者 100test 发表时间 2007:03:14 16:33:07
来源 100Test.Com百考试题网


该宏类似于spin_lock_irqsave,只是该宏不保存标志寄存器的值。禁止本地中断并获取指定的锁

CODE:spin_lock_bh(lock)

该宏在得到自旋锁的同时失效本地软中断。

CODE:spin_unlock(lock)

该宏释放自旋锁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)


相关文章


Linux内核按需动态装载和卸掉模块(1)
Linux内核按需动态装载和卸掉模块(2)
Linux系统内核的同步机制-自旋锁(2)
Linux系统内核的同步机制-自旋锁(1)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛