linuxのメモ

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

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

CPU操作 - __verify_pcpu_ptr()

cpu

概要 受け取ったアドレスが有効な値か確認する 詳細 受け取った値に0を足すことで配列を指すポインタを受け取った場合もポインタとして認識することを強制し、typeof()で値の種別を確認することで有効な値が保持されているアドレスであることを確認すること…

CPU操作 - raw_smp_processor_id()

cpu

概要 現在実行中のCPU番号を取得する 詳細 this_cpu_read()にcpu_number()を渡して実行し、現在実行中のCPU番号を取得する

CPU操作 - cpu_number

cpu

概要 CPU番号 詳細 DECLARE_PER_CPU_READ_MOSTLY()で宣言されるint型のCPU個別の変数で、CPU番号を保持する変数

CPU操作 - DECLARE_PER_CPU_READ_MOSTLY()

cpu

概要 読込みに特化したCPU個別の変数を宣言する 詳細 DECLARE_PER_CPU_SECTION()に"..read_mostly"のセクション名を指定してCPU固有の変数を宣言する

CPU操作 - this_cpu_read()

cpu

概要 指定されたシンボルの値を取得する 詳細 __pcpu_size_call_return()マクロを実行する この時マクロ内ではthis_cpu_read_x()が実行される

CPU操作 - this_cpu_read_x()

cpu

概要 指定されたシンボルの値を取得する 詳細 以下のいずれかのマクロを表し、いずれの場合においてもpercpu_from_op()マクロに"mov"の文字列を引数として渡して実行する this_cpu_read_1() this_cpu_read_2() this_cpu_read_4() this_cpu_read_8()

CPU操作 - __pcpu_size_call_return()

cpu

概要 指定された命令を値のサイズに応じて実行し、実行結果を取得する 詳細 以下の引数を受け取る 実行する関数の種類を示す : stem 対象の値を示す : variable 値のサイズに応じて以下のように実行内容が変わる 1, 2, 4, 8biteの場合 stem が"func_"でサイ…

バッファ操作 - ring_buffer_record_on()

概要 ring_buffer構造体のオブジェクトを有効にする 詳細 ring_buffer構造体のポインタを引数として受け取り、ring_buffer構造体のrecord_disabledメンバのRB_BUFFER_OFFフラグを落とす record_disabledメンバはatomic_t型の変数として宣言されているため、…

トレース - tracer_tracing_on()

概要 traceを有効にする 詳細 trace_array構造体のポインタを引数として受け取り、trace_array構造体内のtrace_buffer構造体のメンバであるbufferに有効なポインタが設定されていた場合はring_buffer_record_on()を実行する。 その後、trace_array構造体のbu…

トレース - tracing_on()

概要 traceを有効にする 詳細 CONFIG_TRACINGが有効な場合にtracer_tracing_on()をglobal_traceのポインタを引数として実行する 無効な場合は何もしない