linuxのメモ

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

2016-02-24から1日間の記事一覧

atomic操作 - atomic_read()

概要 atomic_t型の変数の値をatomicに読み込む 詳細 引数として受け取ったatomic_t型のポインタのcounterの値をREAD_ONCE()マクロで読み込む

バッファ操作 - ring_buffer_record_off()

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

トレース - disable_trace_on_warning()

概要 warning error時にtraceを無効にする 詳細 __disable_trace_on_warningがtrueのときにtracing_off()を実行しtraceを無効にする

トレース - tracing_off()

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

トレース - tracer_tracing_off()

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

メモリバリア - smp_wmb()

概要 変更したメモリの内容が全てのCPUで同期されることを保証する 詳細 CONFIG_SMPが有効な場合は__smp_wmb()マクロを実行するがx86では__smp_wmb()もbarrier()と定義されているため、コンフィギュレーションに関係なくbarrier()のwrapperとなっている

メモリバリア - barrier()

概要 メモリの内容が確実に同期されることを保証する 詳細 gccでコンパイルする場合はlinux/compiler-gcc.hに定義されている __asm__ __volatile__("": : :"memory") が実行されると思いがちだが、IntelのCPUの場合はlinux/compiler-intel.hに定義されている…