linuxのメモ

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

ユーティリティー - static_branch_unlikely()

概要

struct static_key型の値が0であるか確認する

詳細

比較する値xを引数として取得し、HAVE_JUMP_LABELの値によって処理が以下のように変わります

  • 定義済み

    • __builtin_types_compatible_p()xの型を比較し、型がstruct static_key_trueと一致したらarch_static_branch_jump()を、struct static_key_falseと一致したらarch_static_branch()をそれぞれxkeyメンバへのポインタと1を引数として実行するが、いずれの型とも一致しない場合は____wrong_branch_error()を実行する
    • 返り値はいづれかのマクロを実行した返り値となる
  • 未定義