linuxのメモ

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

CPU操作 - to_cpumask()

概要

unsigned longのビットマスクをstruct cpumask構造体へのポインタに変換する

詳細

三項演算子で取得したビットマップか、__check_is_bitmap()の値のいずれかをstruct cpumask構造体のポインタにキャストした値を返す

__check_is_bitmap()は常にint型の整数1を返す関数で、何も処理を行わないが実行時に使用されることがないため、コンパイラの最適化で削除されます

この関数の目的はマクロでは引数の型チェックが行われないため引数で受け取った値の型がunsigned longであることをコンパイル時に確認することです