linuxのメモ

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

2016-04-06から1日間の記事一覧

割込み処理 - irqs_disabled_flags()

irq

概要 引数で受け取った値の割込みフラグが立っているか確認する 詳細 raw_irqs_disabled_flags()のwrapperマクロ

割込み処理 - softirq_count()

irq

概要 ソフトウェア割込みで実行待ちになっているプロセス数を取得する 詳細 preempt_count()で実行待ちプロセス数を取得するが、SOFTIRQ_MASKでマスクをかけるためソフトウェア割込みだけのプロセス数を取得する

割込み処理 - raw_local_irq_restore()

irq

概要 引数の値をフラグレジスタに保存する 詳細 typecheck()により引数の値の型がunsigned longであることを確認し、 arch_local_irq_restore()を実行することでフラグレジスタの値を取得し、割込みを無効化する 取得した値を引数の変数に代入することでフラ…

フラグ操作 - arch_local_irq_restore()

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

準仮想化 - PVOP_CALL_ARGx()

概要 拡張インラインアセンブラで使用可能な引数を指定する命令を生成する 詳細 PVOP_CALL_ARG1、PVOP_CALL_ARG2、PVOP_CALL_ARG3、PVOP_CALL_ARG4のいずれかに該当し以下の処理を行う 引数の値をunsigned long型にキャストし、適切なレジスタに割り当てる拡…

割込み処理 - native_restore_fl()

irq

概要 任意の値をフラグレジスタに保存する 詳細 アセンブラ命令のpushで引数で取得した値をスタックに保存し、保存した値をpopf命令でフラグレジスタに読み込む