linuxのメモ

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

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

文字列操作 - __stringify_1()

概要 マクロをマクロで定義された文字列に変換する 詳細

文字列操作 - __stringify()

概要 マクロを文字列に変換する 詳細 __stringify_1()を実行するが、複数の引数を指定して実行された場合も第一引数のみを変換する

CPU操作 - __percpu_seg

cpu

概要 CPU固有の情報を保持するセグメントを表す文字列 詳細 _CONIG_X86_64が有効な場合はgs、無効な場合はfsとなる

CPU操作 - __percpu_prefix

cpu

概要 CPU固有のprefix示す文字列を出力する 詳細 CONFIG_SMPが無効な場合は空文字("")を出力するが有効な場合は以下のコードとなる "%%"__stringify(__percpu_seg)":" __stringify()に__percpu_segを渡して実行することで、CPU固有の情報を保持したセグメン…

CPU操作 - __percpu_arg()

cpu

概要 CPU固有の引数を示す文字列を出力する 詳細 __percpu_prefixと"%"を引数として受け取った文字列の前に付加する

CPU操作 - percpu_to_op()

cpu

概要 第一引数を出力、第二引数を入力として任意のアセンブラ命令を実行する 詳細 以下の引数を受け取る オペコード : op 出力値 : var 入力値 : val valのデータ型をvarのデータ型にキャストしアセンブラ命令を実行するが、出力値を指定する際に__percpu_ar…

CPU操作 - raw_cpu_write_x()

cpu

概要 指定されたシンボルに値を書き込む 詳細 以下のいずれかのマクロを表し、いずれの場合においてもpercpu_to_op()マクロに"mov"の文字列を引数として渡して実行する raw_cpu_write_1() raw_cpu_write_2() raw_cpu_write_4() raw_cpu_write_8()

CPU操作 - __pcpu_size_call()

cpu

概要 指定された命令を値のサイズに応じて実行する 詳細 以下の引数を受け取る 実行する関数の種類を示す : stem 対象の値を示す : variable 値のサイズに応じて以下のように実行内容が変わる 1, 2, 4, 8biteの場合 stem が"func_"でサイズが1の場合は以下の…

CPU操作 - raw_cpu_write()

cpu

概要 指定されたシンボルに値を書き込む 詳細 __pcpu_size_call()マクロを実行する この時マクロ内ではraw_cpu_write_x()が実行される