2016-02-25から1日間の記事一覧
概要 比較値が古い値と等しい場合に新しい値に書き換える 詳細 以下の値を引数として持つ 比較元の値のポインタ : ptr 元の値 : old 新しい値 : new 比較元の値の大きさを示す値 : size atomicに操作を行うか決める : lock 拡張インラインアセンブラにより以…
概要 比較値が古い値と等しい場合に指定されたサイズの新しい値に書き換える 詳細 受け取った引数にLOCK_PREFIXを追加して__raw_cmpxchg()を実行する LOCK_PREFIXにはCONFIG_SMPが有効な場合は"\n\tlock; "の文字列が入り、全てのCPUでこの操作に伴うメモリ…
概要 比較値が古い値と等しい場合に比較値と同じサイズの新しい値に書き換える 詳細 受け取った引数に比較値のサイズを追加して__cmpxchg()を実行する
概要 atomic_t型の変数の値が古い値と等しい場合に新しい値に書き換える 詳細 引数として受け取ったatomic_t型のポインタのcounterのポインタをcmpxchg()に渡して実行する
概要 指定された値を指定されたsizeでatomicに読み込む 詳細 __READ_ONCE_SIZEマクロを展開し実行する __READ_ONCE_SIZEマクロは以下の変数が宣言されている前提で実行する 値のsizeを示すsize 読込元の値のポインタを示すp 返り値のポインタを示すres また…
概要 指定された値をatomicに読み込む 詳細 checkの値に応じて__read_once_size_nocheck()と__read_once_size()を切り替えるがCONFIG_KASANが無効なときは両関数は同一である。 CONFIG_KASANが有効な場合は宣言が static __always_inline から static __no_s…
概要 指定された値をatomicに読み込む 詳細 __READ_ONCE()マクロで値のチェックを行うように指定し実行する