*参照元 [#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]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS