linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

2016-04-08から1日間の記事一覧

bit操作 - set_bit()

bit

概要 ビットマップの任意のビットをセットする 詳細 この関数では以下の引数を受け取る ビット番号を示す : nr ビットマップを保持する変数へのポインタ : addr IS_IMMEDIATE()にnrを引数として実行し、nrが定数であるか確認する 定数の場合 CONST_MASK_ADDR…

bit操作 - CONST_MASK()

bit

概要 1バイト分のビットマスクを生成する 詳細 このマクロでは以下の引数を受け取る ビット番号を示す : nr nrと7の論理積を取ることでnrの下位3ビットの値を取得し、取得した値分1を左にシフトすることでnrが示す下位1バイトのビットマスクを生成する

bit操作 - CONST_MASK_ADDR()

bit

概要 ビットマップ内の対象ビットが含まれるメモリアドレスを引数とする拡張インラインアセンブラ命令を生成する 詳細 このマクロでは以下の引数を受け取る ビット番号を示す : nr ビットマップを保持する変数へのポインタ : addr BITOP_ADDR()にaddrが示す…

bit操作 - BITOP_ADDR()

bit

概要 拡張インラインアセンブラ命令の引数を指定する命令を生成する 詳細 引数として受け取った値をvolatile long型のポインタとしてキャストし、ポインタの値を拡張インラインアセンブラの引数として指定する命令を生成するが、GCCのバージョンによってメモ…

bit操作 - IS_IMMEDIATE()

bit

概要 取得した値が定数であるか確認する 詳細 コンパイラの標準関数である__builtin_constant_p()で取得した値が定数であるか確認する