linuxのメモ

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

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

フラグ操作 - arch_local_save_flags()

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

準仮想化 - PVOP_CALLEEx()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成し、実行した値を取得する 詳細 PVOP_CALLEE0、PVOP_CALLEE1、PVOP_CALLEE2のいずれかに該当し以下の処理を行う 返り値の型を示すrettypeと実行する命令が含まれる構造体op_を引…

準仮想化 - __PVOP_CALLEESAVE()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成し、実行した値を取得する 詳細 このマクロでは以下の引数を受け取る 取得する値の型を示す : rettype 実行する命令が含まれる構造体 : op 生成されるアセンブラ命令の前に実行す…

準仮想化 - ____PVOP_CALL()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成し、実行した値を取得する 詳細 このマクロでは以下の引数を受け取る 取得する値の型を示す : rettype 実行する命令のポインタを示す : op 命令内で使用するレジスタの種類を示す…

フラグ操作 - native_save_fl()

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

割込み処理 - raw_local_irq_disable()

irq

概要 CPUの割込みを無効化する 詳細 arch_local_irq_disable()のwrapperマクロ

割込み処理 - arch_local_irq_disable()

irq

概要 アーキテクチャの実装応じた、割込み無効化の処理を実行する 詳細 CONFIG_PARAVIRTの値によって以下のように処理が異なる 有効 PVOP_VCALLEE0()にpv_irq_ops.irq_disable*1を渡して実行する 無効 native_irq_disable()を実行する *1:この値は、カーネル…

準仮想化 - PVOP_VCALLEE0()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成する 詳細 実行する命令が含まれる構造体opを引数として受け取り、以下の引数を__PVOP_VCALLEESAVE()に渡して実行し、準仮想環境下で実行される命令を生成する 実行する命令を含…

準仮想化 - __PVOP_VCALLEESAVE()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成する 詳細 このマクロでは以下の引数を受け取る 実行する命令が含まれる構造体 : op 生成されるアセンブラ命令の前に実行する命令を示すアセンブラ命令の文字列 : pre 生成される…

準仮想化 - __PVOP_VCALL()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成する 詳細 このマクロでは以下の引数を受け取る 実行する命令のポインタを示す : op 生成されるアセンブラ命令の前に実行する命令を示すアセンブラ命令の文字列 : pre 生成される…

準仮想化 - ____PVOP_VCALL()

概要 準仮想環境下で実行される命令の置き換え、及び実行するための命令を生成する 詳細 このマクロでは以下の引数を受け取る 実行する命令のポインタを示す : op 命令内で使用するレジスタの種類を示す : clbr アセンブラ命令の出力引数として指定する引数…

準仮想化 - PVOP_TEST_NULL()

概要 引数の値が有効な値か確認する 詳細 CONFIG_PARAVIRT_DEBUGが有効な場合は引数の値とNULLを比較してBUG_ON()を実行するが、無効な場合は何もしない

準仮想化 - paravirt_alt()

概要 準仮想環境下で実行される命令の置き換え、及び実行するためのアセンブラ命令を生成する 詳細 _paravirt_alt()に以下の引数を渡してアセンブラ命令を生成する 引数として渡された実行する命令を示す文字列 入力オペランドとして渡される置き換える命令…

準仮想化 - _paravirt_alt()

概要 準仮想環境下で実行される命令の置き換え、及び実行するためのアセンブラ命令を生成する 詳細 このマクロでは以下の引数を取得する 挿入する命令を示す文字列 : insn_string 挿入する命令の種類を示す : type 使用するレジスタの種類を示す : clobber i…