TIPS/LinuxKernel/spinlock

Last-modified: 2006-11-21 (火) 12:53:37

TIPS/LinuxKernel

spinlock

spinlock機能は、CPUを排他するための機能。
SMPでない環境では動作しない。

つまり、

spinlock = spinlock_cpu

なのである

spinlock_t

CONFIG_SMP / CONFIG_SPINLOCK_DEBUGでない場合は
spinlock_tで定義した変数はそもそも定義されない
また、spinlockに関わるマクロも動作しない(空マクロが定義されるだけ)

spin_lock_XXX

spin_lock_bh
はCPU排他と同時にbh(ソフト割り込みハンドラの実行)を排他するための
機能であるため、上記とは違って、SMPでなくてもきちんと動作する

他のspinlock_XXXも、XXXを排他するための機能と認識すること

  • spin_lock_irq
  • spin_lock_irqsave
    など