linux-2.6.33/__raw_spin_lock_irqsave()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#t32f6685]
#backlinks
*説明 [#sec810a5]
-パス: 複数あり
-CONFIG_GENERIC_LOCKBREAK 未定義時、
または CONFIG_DEBUG_LOCK_ALLOC 定義時の場合:
[[linux-2.6.33/include/linux/spinlock_api_smp.h]]
--[[linux-2.6.33/CONFIG_GENERIC_LOCKBREAK]]
--[[linux-2.6.33/CONFIG_DEBUG_LOCK_ALLOC]]
-それ以外の場合: [[linux-2.6.33/kernel/spinlock.c]]
-FIXME: これは何?
--説明
**引数 [#za5a971e]
-raw_spinlock_t *lock
--
**返り値 [#x1b607e9]
-unsigned long
--
**参考 [#kc3d16a6]
-BUILD_LOCK_OPS() を使う場合に一緒に定義される関数
--[[linux-2.6.33/__raw_spin_lock()]]
--[[linux-2.6.33/__raw_spin_lock_irq()]]
--[[linux-2.6.33/__raw_spin_lock_irqsave()]]
--[[linux-2.6.33/__raw_spin_lock_bh()]]
*実装 [#ja03a4b7]
**CONFIG_GENERIC_LOCKBREAK 未定義時、 [#ufbb03dd]
または CONFIG_DEBUG_LOCK_ALLOC 定義時
static inline unsigned long __raw_spin_lock_irqsave(raw_...
{
unsigned long flags;
local_irq_save(flags);
-
--[[linux-2.6.33/local_irq_save()]]
preempt_disable();
-
--[[linux-2.6.33/preempt_disable()]]
spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
-
--[[linux-2.6.33/spin_acquire()]]
/*
* On lockdep we dont want the hand-coded irq-enable of
* do_raw_spin_lock_flags() code, because lockdep assumes
* that interrupts are not re-enabled during lock-acqui...
*/
#ifdef CONFIG_LOCKDEP
LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_l...
-
--[[linux-2.6.33/LOCK_CONTENDED()]]
#else
do_raw_spin_lock_flags(lock, &flags);
-
--[[linux-2.6.33/do_raw_spin_lock_flags()]]
#endif
return flags;
}
**それ以外 [#nd08f7e8]
BUILD_LOCK_OPS(spin, raw_spinlock);
-プリエンプションに対応したロック関数を定義する。
--[[linux-2.6.33/BUILD_LOCK_OPS()]]
*コメント [#tbcc3bbe]
終了行:
*参照元 [#t32f6685]
#backlinks
*説明 [#sec810a5]
-パス: 複数あり
-CONFIG_GENERIC_LOCKBREAK 未定義時、
または CONFIG_DEBUG_LOCK_ALLOC 定義時の場合:
[[linux-2.6.33/include/linux/spinlock_api_smp.h]]
--[[linux-2.6.33/CONFIG_GENERIC_LOCKBREAK]]
--[[linux-2.6.33/CONFIG_DEBUG_LOCK_ALLOC]]
-それ以外の場合: [[linux-2.6.33/kernel/spinlock.c]]
-FIXME: これは何?
--説明
**引数 [#za5a971e]
-raw_spinlock_t *lock
--
**返り値 [#x1b607e9]
-unsigned long
--
**参考 [#kc3d16a6]
-BUILD_LOCK_OPS() を使う場合に一緒に定義される関数
--[[linux-2.6.33/__raw_spin_lock()]]
--[[linux-2.6.33/__raw_spin_lock_irq()]]
--[[linux-2.6.33/__raw_spin_lock_irqsave()]]
--[[linux-2.6.33/__raw_spin_lock_bh()]]
*実装 [#ja03a4b7]
**CONFIG_GENERIC_LOCKBREAK 未定義時、 [#ufbb03dd]
または CONFIG_DEBUG_LOCK_ALLOC 定義時
static inline unsigned long __raw_spin_lock_irqsave(raw_...
{
unsigned long flags;
local_irq_save(flags);
-
--[[linux-2.6.33/local_irq_save()]]
preempt_disable();
-
--[[linux-2.6.33/preempt_disable()]]
spin_acquire(&lock->dep_map, 0, 0, _RET_IP_);
-
--[[linux-2.6.33/spin_acquire()]]
/*
* On lockdep we dont want the hand-coded irq-enable of
* do_raw_spin_lock_flags() code, because lockdep assumes
* that interrupts are not re-enabled during lock-acqui...
*/
#ifdef CONFIG_LOCKDEP
LOCK_CONTENDED(lock, do_raw_spin_trylock, do_raw_spin_l...
-
--[[linux-2.6.33/LOCK_CONTENDED()]]
#else
do_raw_spin_lock_flags(lock, &flags);
-
--[[linux-2.6.33/do_raw_spin_lock_flags()]]
#endif
return flags;
}
**それ以外 [#nd08f7e8]
BUILD_LOCK_OPS(spin, raw_spinlock);
-プリエンプションに対応したロック関数を定義する。
--[[linux-2.6.33/BUILD_LOCK_OPS()]]
*コメント [#tbcc3bbe]
ページ名: