linuxのメモ

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

bit操作 - MASK_DECLARE_X()

概要

indexからbitマスクを取得可能な二次元配列を定義する

詳細

MASK_DECLARE_8、MASK_DECLARE_4、MASK_DECLARE_2、MASK_DECLARE_1のいずれかに該当し以下の処理を行う

引数の値をx、マクロ名のprefixをX、マクロをf()で表すとすると以下の再帰関数として定義される

             X = 1 : [x + 1][0] = [1 << x]
f(X, x) = {
             X > 1 : f(X / 2, x), f(X / 2, x + X / 2)

従って、x + 1からX要素分の配列の先頭の配列に配列のインデックスの値のbitが立った数値で初期化する