簡介
Spinlock,中文譯名為“自旋鎖”。
用法
spinlock 在 Linux底下是以 spinlock_t 來表示的。使用spinlock必須包含#include
spinlock主要是用在SMP的環境底下,
在SMP環境下它的結構如下
typedef struct
{
volatile unsigned int lock;
}
spinlock_t;
程式用例
使用 spinlock
spinlock t xxx lock = SPIN_LOCK_UNLOCKED;
unsigned long flags;
spin lock irqsave (&xxx lock, flags)
...critical section... spin
unlock irqrestore (&xxx lock, flags)
這一組的函式在使用上是最保險的,用的頻率也算是最多的。首先在使用前,必須先定義一個 spinlock_t 類型的變數,並把初始值設為 SPIN_LOCK_UNLOCKED 。除此之外,還必須有一個 unsigned long 類型的變數,這個變數是用來將 CPU 的 flag 儲存起來的,等 critical section 執行完了,再把 flag 的值設回到系統里。使用上是非常簡單明白的。