linuxのメモ

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

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

atomic操作 - __raw_cmpxchg()

概要 比較値が古い値と等しい場合に新しい値に書き換える 詳細 以下の値を引数として持つ 比較元の値のポインタ : ptr 元の値 : old 新しい値 : new 比較元の値の大きさを示す値 : size atomicに操作を行うか決める : lock 拡張インラインアセンブラにより以…

atomic操作 - __cmpxchg()

概要 比較値が古い値と等しい場合に指定されたサイズの新しい値に書き換える 詳細 受け取った引数にLOCK_PREFIXを追加して__raw_cmpxchg()を実行する LOCK_PREFIXにはCONFIG_SMPが有効な場合は"\n\tlock; "の文字列が入り、全てのCPUでこの操作に伴うメモリ…

atomic操作 - cmpxchg()

概要 比較値が古い値と等しい場合に比較値と同じサイズの新しい値に書き換える 詳細 受け取った引数に比較値のサイズを追加して__cmpxchg()を実行する

atomic操作 - atomic_cmpxchg()

概要 atomic_t型の変数の値が古い値と等しい場合に新しい値に書き換える 詳細 引数として受け取ったatomic_t型のポインタのcounterのポインタをcmpxchg()に渡して実行する

atomic操作 - __read_once_size

概要 指定された値を指定されたsizeでatomicに読み込む 詳細 __READ_ONCE_SIZEマクロを展開し実行する __READ_ONCE_SIZEマクロは以下の変数が宣言されている前提で実行する 値のsizeを示すsize 読込元の値のポインタを示すp 返り値のポインタを示すres また…

atmic操作 - __READ_ONCE

概要 指定された値をatomicに読み込む 詳細 checkの値に応じて__read_once_size_nocheck()と__read_once_size()を切り替えるがCONFIG_KASANが無効なときは両関数は同一である。 CONFIG_KASANが有効な場合は宣言が static __always_inline から static __no_s…

atomic操作 - READ_ONCE()

概要 指定された値をatomicに読み込む 詳細 __READ_ONCE()マクロで値のチェックを行うように指定し実行する