linuxのメモ

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

flags

フラグ操作 - arch_local_irq_restore()

概要 引数の値をフラグレジスタに保存する 詳細 CONFIG_PARAVIRTの値によって以下のように処理が異なる 有効 PVOP_CALLEE1()に返り値の型unsigned long、pv_irq_ops.save_fl*1と引数の値を渡して実行する 無効 native_save_fl()を実行する *1:この値は、カー…

フラグ操作 - local_save_flags()

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

フラグ操作 - raw_irqs_disabled_flags()

概要 引数で受け取った値の割込みフラグが立っているか確認する 詳細 typecheck()で引数の値がunsigned long型であることを確認し、arch_irqs_disabled_flags()で割込みの状態を確認し、この値を返り値とする

フラグ操作 - raw_local_save_flags()

概要 フラグレジスタの値を取得する 詳細 typecheck()で引数の値がunsigned long型であることを確認し、arch_local_save_flags()で現在のフラグレジスタの値を取得する 取得した値は引数の値に上書きするため、呼び出し元で取得した値を参照することができる

フラグ操作 - arch_local_save_flags()

概要 フラグレジスタの値を取得する 詳細 CONFIG_PARAVIRTの値によって以下のように処理が異なる 有効 PVOP_CALLEE0()に返り値の型unsigned longとpv_irq_ops.save_fl*1を渡して実行する 無効 native_save_fl()を実行する *1:この値は、カーネルコンパイル時…

フラグ操作 - native_save_fl()

概要 フラグレジスタの値を取得する 詳細 pushf命令で現在のフラグレジスタの値をスタックに保存し、pop命令で保存したフラグを取得する pop命令のデータの転送先は拡張インラインアセンブラ命令の出力オペランドに割り当てられた変数になり、この変数の値を…