linuxのメモ

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

2016-03-24から1日間の記事一覧

CPU操作 - cpumask_equal()

cpu

概要 CPUのビットマップを比較する 詳細 この関数ではCPUのビットマップを示すstruct cpumask構造体へのポインタ2つ(比較元と比較先)を受け取る cpumask_bits()で受け取った2つの値のbits要素(配列)を取得し、この値とnr_cpumask_bitsをbitmap_equal()に渡し…

CPU操作 - nr_cpumask_bits

cpu

概要 CPUのビットマスクに必要なbit数を定義する定数 詳細 CONFIG_CPUMASK_OFFSTACKの値によって以下のように異なる 有効 nr_cpu_idsの値 無効 NR_CPUSが示すCPU数

CPU操作 - nr_cpu_ids

cpu

概要 CPU数を保持する変数 詳細 NR_CPUSを初期値として持つが、起動時にsetup_nr_cpu_ids()で適切な値で上書きされる また、EXPORT_SYMBOL()によりモジュールからもアクセス可能な値となる

bit操作 - bitmap_equal()

bit

概要 bit数を指定してビットマップを比較する 詳細 このマクロでは以下の引数を取得する 比較対象のビットマップへのポインタ : src1、src2 比較するビット数を示す : nbits small_const_nbits()でnbitsの値を確認した結果によって以下のように処理が異なる …

bit操作 - __bitmap_equal()

bit

概要 bit数を指定してビットマップを比較する 詳細 この関数では以下の引数を取得する 比較対象のビットマップへのポインタ : bitmap1、bitmap2 比較するビット数を示す : bits bitmap1とbitmap2は配列となっているため[要素数 - 1]回bitmap1とbitmap2の値を…

bit操作 - BITMAP_LAST_WORD_MASK()

bit

概要 指定したビット数分下位bitが1になる値を返す 詳細 取得した値の2の補数と[BITS_PER_LONG - 1]の論理積を求める この演算で取得した値の2の補数からBITS_PER_LONG以上のbitを全て落とす !0UL*1を上で求めた値分右にシフトする 結果として得られる値は引…

bit操作 - small_const_nbits()

bit

概要 値がBITS_PER_LONG以下の定数であることを確認する 詳細 引数で受け取った値が定数でかつBITS_PER_LONG以下の場合は1を、それ以外の場合は0を返す BITS_PER_LONG以上の大きさの値はunsigned long型の変数に収まらないため、ここで確認する値は受け取っ…