linux-2.6.33/constant_test_bit()(x86)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#c1e38487]
#backlinks
*説明 [#i184d0b9]
-パス: [[linux-2.6.33/arch/x86/include/asm/bitops.h]]
-指定されたビット位置の値をテストする。
--ビット位置が定数(定数マクロ、enum 値など)の場合に使用...
**引数 [#l0ae78c7]
-unsigned int nr
--ビット位置
-const volatile unsigned long *addr
--評価対象の unsigned long 値のポインタ
**返り値 [#r08214c7]
-int
--ビットがセットされている場合 0 以外、ビットがセットされ...
**参考 [#i868a0e2]
*実装 [#r12e3cfd]
static __always_inline int constant_test_bit(unsigned in...
{
return ((1UL << (nr % BITS_PER_LONG)) &
(((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0;
-一見遅そうな処理だが、
(1UL << (nr % BITS_PER_LONG)) と nr / BITS_PER_LONG は
コンパイル時に定数に変換される。たぶん。
-BITS_PER_LONG ビット以上の位置を指定した際の動作も考慮し...
相棒の variable_test_bit() は考慮していない。片手落ち??
--[[linux-2.6.33/variable_test_bit()(x86)]]
}
*コメント [#mddc2dcd]
終了行:
*参照元 [#c1e38487]
#backlinks
*説明 [#i184d0b9]
-パス: [[linux-2.6.33/arch/x86/include/asm/bitops.h]]
-指定されたビット位置の値をテストする。
--ビット位置が定数(定数マクロ、enum 値など)の場合に使用...
**引数 [#l0ae78c7]
-unsigned int nr
--ビット位置
-const volatile unsigned long *addr
--評価対象の unsigned long 値のポインタ
**返り値 [#r08214c7]
-int
--ビットがセットされている場合 0 以外、ビットがセットされ...
**参考 [#i868a0e2]
*実装 [#r12e3cfd]
static __always_inline int constant_test_bit(unsigned in...
{
return ((1UL << (nr % BITS_PER_LONG)) &
(((unsigned long *)addr)[nr / BITS_PER_LONG])) != 0;
-一見遅そうな処理だが、
(1UL << (nr % BITS_PER_LONG)) と nr / BITS_PER_LONG は
コンパイル時に定数に変換される。たぶん。
-BITS_PER_LONG ビット以上の位置を指定した際の動作も考慮し...
相棒の variable_test_bit() は考慮していない。片手落ち??
--[[linux-2.6.33/variable_test_bit()(x86)]]
}
*コメント [#mddc2dcd]
ページ名: