*参照元 [#kf6251cf] #backlinks *説明 [#a427fc4a] -パス: 複数あり --SMP 無効の場合: [[linux-2.6.33/include/linux/spinlock_types_up.h]] --arm 版: [[linux-2.6.33/arch_spinlock_t(arm)]] --x86 版: [[linux-2.6.33/arch_spinlock_t(x86)]] -スピンロックのアーキテクチャ依存部分 --スピンロックの実現方法はアーキテクチャにより異なる。 **参考 [#u8fcc820] *実装 [#n4337411] ** SMP 無効の場合 [#ab5e8f8b] #ifdef CONFIG_DEBUG_SPINLOCK -スピンロックのデバッグ機能が無効の場合 --[[linux-2.6.33/CONFIG_DEBUG_SPINLOCK]] typedef struct { volatile unsigned int slock; } arch_spinlock_t; -ロックカウントのみの構造体 --ロックカウントが 0 ならロック状態、1ならアンロック状態 --本来、SMP が無効ならカーネル内でスピンロックしても何も行わない。 つまりロックする必要がないのだが、デバッグのためにロックカウントを持つ。 #else -スピンロックのデバッグ機能が無効の場合 typedef struct { } arch_spinlock_t; -空の構造体 #endif ** SMP 有効の場合 [#nf88a45e] -各アーキテクチャのページを参照ください。 *コメント [#n0a5ac6f]