linuxのメモ

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

2016-03-28から1日間の記事一覧

アセンブラ命令 - asm_volatile_goto()

asm

概要 インラインアセンブラ内でC言語内のラベルにgoto可能なコードを生成する 詳細 コンパイラがサポートしている場合は asm goto() で拡張インラインアセンブラのコードを展開し、コンパイラによりインラインアセンブラのコードからC言語のラベルにgoto可能…

トレース - is_graph()

概要 stract trace構造体のtrace_flagsメンバのフラグを確認する 詳細 CONFIG_FUNCTION_GRAPH_TRACERが無効な場合は常に0を返すが、有効な場合はstruct trace_array構造体のtrace_flagsメンバの値にTRACE_ITER_DISPLAY_GRAPH*1のbitが立っているかを確認する…

トレース - TRACE_FLAGS

概要 stract trace構造体のtrace_flagsで取り得る値を定義する 詳細 stract trace構造体のtrace_flagsで取り得る値とその名前を定義するためのマクロで、このマクロ内で使用されるC()はシンボル名と名前を引数として受け取りこのフラグセットを使用する箇所…

トレース - trace_iterator_bits

概要 struct trace構造体のtrace_flagsメンバが利用可能な値のビット番号を定義する 詳細 TRACE_FLAGSによりstruct trace構造体のtrace_flagsメンバで取り得る値のビット番号とその値を示す名前を定義する

トレース - trace_iterator_flags

概要 struct trace構造体のtrace_flagsメンバの値を定義する 詳細 TRACE_FLAGSによりstruct trace構造体のtrace_flagsメンバで取り得る値とその値を示す名前を定義する

フラグ操作 - local_save_flags()

概要 フラグレジスタの値を取得する 詳細 raw_local_save_flags()のwrapperマクロ

CPU操作 - setup_nr_cpu_ids()

cpu

概要 CPU数を保持する変数を初期化する 詳細 CONFIG_SMPが無効な場合は何も行わないが、有効な場合はcpumask_bits()にcpu_possible_maskを渡すことで、実行可能なCPUのビットマップを取得し、その値とNR_CPUSをfind_last_bit()に渡すことでビットマップ内で…

bit操作 - find_last_bit()

bit

概要 ビットマップ配列内でビットが1になっている最も大きな位置を取得する 詳細 この関数では以下の引数を取得する ビットマップの配列へのポインタ : addr ビットマップの大きさを示す : size 全ての配列の値と対応するビットマスクの論理積をとり、共通の…

bit操作 - __fls()

bit

概要 任意の値のビットが1になっている最も大きな位置を取得する 詳細 アセンブラ命令のbsr命令で取得した値のビットが1になっている最も大きな位置を取得し、その値を返す

CPU操作 - cpu_possible_mask

cpu

概要 実行可能なCPU番号のビットマップへのポインタ 詳細 __cpu_possible_maskへのポインタを返すマクロ

CPU操作 - __cpu_possible_mask

cpu

概要 実行可能なCPU番号に必要なビットマップを保持するstruct cpumask型の変数 詳細 CONFIG_INIT_ALL_POSSIBLEが無効な場合は初期化されない(つまり0になる)が、有効な場合はCPU_BITS_ALLで初期化されるstruct cpumask型の変数で、EXPORT_SYMBOL()によりモ…

CPU操作 - CPU_BITS_ALL

cpu

概要 実行可能なCPU番号に必要なビットマップを初期化するための配列を返す 詳細 BITS_TO_LONGS()でNR_CPUSで必要な配列数を算出し、最後の要素([配列数 - 1])にBITMAP_LAST_WORD_MASK()でNR_CPUSのビットマップを取得し、その値で初期化する ただし、NR_CPU…