linux-2.6.33/spinlock_t
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#n0b87a22]
#backlinks
*説明 [#y4422dce]
-パス: [[linux-2.6.33/include/linux/spinlock_types.h]]
-スピンロック
-特徴
--1人しかロック状態に入れない。
--ロック状態のスピンロックに対して、
ロックを試みるとロックが解除されるまでビジーウェイトする。
--再帰的にロックできない。デッドロックする。
--所有権は管理しない。ロックしたコンテキスト以外でもアン...
**参考 [#c43444fd]
*実装 [#j35ef517]
typedef struct spinlock {
union {
struct raw_spinlock rlock;
-スピンロックの実体
--ここだけなぜか struct raw_spinlock を使っているが、
他の場所では raw_spinlock_t を使う。
--[[linux-2.6.33/raw_spinlock_t]]
#ifdef CONFIG_DEBUG_LOCK_ALLOC
-ロック状態のスピンロックを free してしまうバグを検知する...
--[[linux-2.6.33/CONFIG_DEBUG_LOCK_ALLOC]]
(略)
struct {
u8 __padding[LOCK_PADSIZE];
-LOCK_PADSIZE は raw_spinlock_t のうち、
dep_map のオフセット位置までのサイズである。
--[[linux-2.6.33/LOCK_PADSIZE]]
struct lockdep_map dep_map;
-rlock.dep_map へのショートカットである。
--過去の互換性のためだと思われるが詳細は不明。
--ショートカットの意味
spinlock_t s;
としたとき、
s.rlock.dep_map と s.dep_map は全く同じメモリ領域を指す。
--[[linux-2.6.33/lockdep_map]]
};
#endif
};
} spinlock_t;
*コメント [#v3100b21]
終了行:
*参照元 [#n0b87a22]
#backlinks
*説明 [#y4422dce]
-パス: [[linux-2.6.33/include/linux/spinlock_types.h]]
-スピンロック
-特徴
--1人しかロック状態に入れない。
--ロック状態のスピンロックに対して、
ロックを試みるとロックが解除されるまでビジーウェイトする。
--再帰的にロックできない。デッドロックする。
--所有権は管理しない。ロックしたコンテキスト以外でもアン...
**参考 [#c43444fd]
*実装 [#j35ef517]
typedef struct spinlock {
union {
struct raw_spinlock rlock;
-スピンロックの実体
--ここだけなぜか struct raw_spinlock を使っているが、
他の場所では raw_spinlock_t を使う。
--[[linux-2.6.33/raw_spinlock_t]]
#ifdef CONFIG_DEBUG_LOCK_ALLOC
-ロック状態のスピンロックを free してしまうバグを検知する...
--[[linux-2.6.33/CONFIG_DEBUG_LOCK_ALLOC]]
(略)
struct {
u8 __padding[LOCK_PADSIZE];
-LOCK_PADSIZE は raw_spinlock_t のうち、
dep_map のオフセット位置までのサイズである。
--[[linux-2.6.33/LOCK_PADSIZE]]
struct lockdep_map dep_map;
-rlock.dep_map へのショートカットである。
--過去の互換性のためだと思われるが詳細は不明。
--ショートカットの意味
spinlock_t s;
としたとき、
s.rlock.dep_map と s.dep_map は全く同じメモリ領域を指す。
--[[linux-2.6.33/lockdep_map]]
};
#endif
};
} spinlock_t;
*コメント [#v3100b21]
ページ名: