*参照元 [#rd168395]
*参照元 [#nb5dee56]
#backlinks

*説明 [#yea7af67]
*説明 [#m87eed35]
-パス: [[linux-2.6.33/arch/x86/include/asm/bitops.h]]

-unsigned long 値の指定されたビット位置に
ビットが立っているかどうかテストする。


**引数 [#p7b325ae]
**引数 [#mf22d14f]
-int nr
--ビット位置
-const volatile unsigned long *addr
--評価対象の unsigned long 値のポインタ


**返り値 [#fb855be0]
**返り値 [#zc3bfd47]
-int
--ビットがセットされている場合 0 以外、ビットがセットされていない場合 0


**参考 [#jf6e96ce]
**参考 [#e19ce620]


*実装 [#i1f88f02]
*実装 [#q79ccbb2]
 #if 0 /* Fool kernel-doc since it doesn't do macros yet */
 /**
  * test_bit - Determine whether a bit is set
  * @nr: bit number to test
  * @addr: Address to start counting from
  */
 static int test_bit(int nr, const volatile unsigned long *addr);
 #endif
 
 #define test_bit(nr, addr)			\
 	(__builtin_constant_p((nr))		\
 	 ? constant_test_bit((nr), (addr))	\
 	 : variable_test_bit((nr), (addr)))
-nr が定数ならば、定数用のテスト関数(constant_test_bit)を呼び、
そうでなければ汎用のテスト関数(variable_test_bit)を呼ぶ。
--[[linux-2.6.33/__builtin_constant_p()]]
--[[linux-2.6.33/constant_test_bit()(x86)]]
--[[linux-2.6.33/variable_test_bit()(x86)]]
-__builtin_constant_p() は GCC の組み込み関数で、
渡された引数(この場合は nr)が定数ならば 1、そうでなければ 0 を返す。
-この最適化を有効にしないと決して 1 を返さない。


*コメント [#x23f856c]
*コメント [#t4594893]

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