2016-03-16から1日間の記事一覧
概要 traceが有効か確認する 詳細 smp_rmb()を実行し、すべてのCPUでメモリを同期しglobal_trace変数のbuffer_disabledメンバが有効な値の場合に0を、それ以外の場合に1を返す global_trace変数のbuffer_disabledメンバはtracing_off()で無効にされる
概要 指定された値をatomicにデクリメントする 詳細 引数として受け取ったatomic_t型のポインタのcounterの値をアセンブラのdecl命令でデクリメントする decl命令の直前にLOCK_PREFIXを実行する この値はCONFIG_SMPが有効な場合は"\n\tlock; "となりメモリを…
概要 指定された値をatomicにインクリメントする 詳細 引数として受け取ったatomic_t型のポインタのcounterの値をアセンブラのincl命令でインクリメントする incl命令の直前にLOCK_PREFIXを実行する この値はCONFIG_SMPが有効な場合は"\n\tlock; "となりメモ…
概要 実行待ちプロセスが存在するか確認する 詳細 CONFIG_PREEMPT_TRACER の値によって以下のように処理が異なる 有効 trace_typeの値にTRACER_PREEMPT_OFFのbitが立っており、かつpreempt_count() を実行し実行待ちプロセス数を確認し、実行待ちプロセス数…
概要 実行待ちのプロセス数を取得する 詳細 CPU毎の実行待ちプロセス数を表す__preempt_countの値をraw_cpu_read_4()で取得し、PREEMPT_NEED_RESCHEDのbitを反転した値を返す
概要 指定されたシンボルの値を取得する 詳細 以下のいずれかのマクロを表し、いずれの場合においてもpercpu_from_op()マクロに"mov"の文字列を引数として渡して実行する raw_cpu_read_1() raw_cpu_read_2() raw_cpu_read_4() raw_cpu_read_8()
概要 CPU固有の指定した値を任意のアセンブラ命令で取得する 詳細 以下の引数を受け取る オペコード : op 入力値 : var 入力値を指定する際に__percpu_arg()マクロに1を引数として渡して実行した結果を使用している また、opにはvarのサイズに応じてb, w, l,…
概要 実行待ちプロセスカウンター 詳細 DECLARE_PER_CPU()で宣言されるint型のCPU個別の変数で、CPU毎の実行待ちプロセスのカウンターで、この値が0以上の場合はプリエンプションが無効になる 尚、この値には複数の割込みのカウンタを持ち、以下のように値が…