linuxのメモ

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

once

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()マクロで値のチェックを行うように指定し実行する

エラー出力 - WARN_ON_ONCE()

概要 conditionがtrueの場合にwarningエラーを一度だけ出力する 詳細 CONFIG_BUGの設定で挙動が変わる 無効な場合はエラー出力を行わない 有効な場合は、WARN_ON()マクロを一度だけ実行する このマクロ内でstaic変数に実行済みかどうかのフラグを持たせるこ…