linuxのメモ

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

optimize

最適化 - likely()

概要 値が0でないことを確認し、0以外の場合に最適化されたコードを生成する 詳細 比較する値xを引数として受け取り、CONFIG_TRACE_BRANCH_PROFILINGとDISABLE_BRANCH_PROFILING、__CHECKER__の値によって以下のように処理が異なる CONFIG_TRACE_BRANCH_PROF…

最適化 - unlikely()

概要 値が0であるか確認し、0の場合に最適化されたコードを生成する 詳細 比較する値xを引数として受け取り、CONFIG_TRACE_BRANCH_PROFILINGとDISABLE_BRANCH_PROFILING、__CHECKER__の値によって以下のように処理が異なる CONFIG_TRACE_BRANCH_PROFILINGが…

最適化 - __branch_check__()

概要 二つの値が一致するか比較する 詳細 likely_notrace()に比較対象の値が0以外かどうか確認し、比較した結果を返す また、このマクロ呼び出しの結果をftrace_likely_update()で統計情報(ヒット・ミスのカウンタ)を更新する このマクロはunlikely()でも呼…

最適化 - likely_notrace()

概要 引数の値が期待値と一致するか確認する 詳細 __builtin_expect()*1_の第一引数に受け取った引数に!を二回つけることで0の場合は0、それ以外の場合は1を渡し、第二引数に1を渡すことで受け取った引数の値が0で無いことを確認する 尚、このコードは値が0…