linuxのメモ

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

asm

アセンブラ命令 - _ASM_SUB

asm

概要 CPUのアーキテクチャに応じた減算命令を生成する 詳細 __ASM_SIZE()にsubを渡して実行し、CPUのアーキテクチャに応じたインクリメント命令を生成する

アセンブラ命令 - _ASM_XADD

asm

概要 CPUのアーキテクチャに応じた値を交換する加算命令を生成する 詳細 __ASM_SIZE()にxaddを渡して実行し、CPUのアーキテクチャに応じた値を交換する加算命令を生成する

アセンブラ命令 - _ASM_ADD

asm

概要 CPUのアーキテクチャに応じた加算命令を生成する 詳細 __ASM_SIZE()にaddを渡して実行し、CPUのアーキテクチャに応じたインクリメント命令を生成する

アセンブラ命令 - _ASM_INC

asm

概要 CPUのアーキテクチャに応じたインクリメント命令を生成する 詳細 __ASM_SIZE()にincを渡して実行し、CPUのアーキテクチャに応じたインクリメント命令を生成する

アセンブラ命令 - _ASM_DEC

asm

概要 CPUのアーキテクチャに応じたデクリメント命令を生成する 詳細 __ASM_SIZE()にdecを渡して実行し、CPUのアーキテクチャに応じたデクリメント命令を生成する

アセンブラ命令 - __ASM_SIZE()

asm

概要 CPUのアーキテクチャに応じて適切なアセンブラ命令を生成する 詳細 アセンブラ命令を示す文字列instを引数として取得するが、可変長引数として複数の引数を取得できる __ASM_SEL()の第一引数にinstとlに可変長引数の値を連結した文字列を、第二引数には…

アセンブラ命令 - STATIC_KEY_INIT_NOP

asm

概要 5byteのNOP命令を示すバイトコード 詳細 CONFIG_X86_64の値が有効な場合はP6_NOP5_ATOMIC、無効な場合はGENERIC_NOP5_ATOMICで示される5byteのNOP命令に変換される

アセンブラ命令 - P6_NOPx

asm

概要 P6アーキテクチャのCPUで使用可能なNOP命令 詳細 各数値が実行命令のバイト数を表しており、以下の命令が使用できる P6_NOP1 P6_NOP2 P6_NOP3 P6_NOP4 P6_NOP5 P6_NOP6 P6_NOP7 P6_NOP8 P6_NOP5_ATOMIC それぞれの命令は以下に示すアセンブラ命令と同等…

アセンブラ命令 - K7_NOPx

asm

概要 K7アーキテクチャのCPUで使用可能なNOP命令 詳細 各数値が実行命令のバイト数を表しており、以下の命令が使用できる K7_NOP1 K7_NOP2 K7_NOP3 K7_NOP4 K7_NOP5 K7_NOP6 K7_NOP7 K7_NOP8 K7_NOP5_ATOMIC それぞれの命令は以下に示すアセンブラ命令と同等…

アセンブラ命令 - K8_NOPx

asm

概要 K8アーキテクチャのCPUで使用可能なNOP命令 詳細 各数値が実行命令のバイト数を表しており、以下の命令が使用できる K8_NOP1 K8_NOP2 K8_NOP3 K8_NOP4 K8_NOP5 K8_NOP6 K8_NOP7 K8_NOP8 K8_NOP5_ATOMIC それぞれの命令は以下に示すアセンブラ命令と同等…

アセンブラ命令 - GENERIC_NOPx

asm

概要 x86CPUで共通で使用可能なNOP命令 詳細 各数値が実行命令のバイト数を表しており、以下の命令が使用できる GENERIC_NOP1 GENERIC_NOP2 GENERIC_NOP3 GENERIC_NOP4 GENERIC_NOP5 GENERIC_NOP6 GENERIC_NOP7 GENERIC_NOP8 GENERIC_NOP5_ATOMIC それぞれの…

アセンブラ命令 - THUNK

asm

概要 任意のラベル名でデフォルト引数を持つ指定した関数を実行するコードを生成する 詳細 アセンブラのマクロとして定義され、以下の引数を受け取る ラベルの名前を示す : name 実行する関数へのポインタ : func 実行する関数に呼び出し元のアドレスが必要…

アセンブラ命令 - _ASM_NOKPROBE

asm

概要 kprobe_blacklistセクションに任意のデータを追加する 詳細 pushsectionセクションで_kprobe_blacklistに書込み可能なデータとして_ASM_ALIGNでアライメントされ、_ASM_PTRで受け取ったデータのアドレスを示すデータを追加する

アセンブラ命令 - GEN_UNARY_RMWcc()

asm

概要 任意のアセンブラ命令を実行し、実行結果を返す 詳細 このマクロでは以下の引数を受け取る アセンブラ命令のニーモニックを示す文字列 : op アセンブラ命令の実行対象を示す変数へのポインタ : var アセンブラ命令の0番目のオペランドを示す文字列 : ar…

アセンブラ命令 - __GEN_RMWcc()

asm

概要 任意のアセンブラ命令を実行し、実行結果を返す 詳細 このマクロでは以下の引数を受け取る アセンブラ命令を示す文字列 : fullop アセンブラ命令の実行対象を示す変数へのポインタ : var 返り値の判断に使用するsuffix : cc CC_HAVE_ASM_GOTOが有効な場…

アセンブラ命令 - asm_volatile_goto()

asm

概要 インラインアセンブラ内でC言語内のラベルにgoto可能なコードを生成する 詳細 コンパイラがサポートしている場合は asm goto() で拡張インラインアセンブラのコードを展開し、コンパイラによりインラインアセンブラのコードからC言語のラベルにgoto可能…

アセンブラ命令 - _ASM_PTR

asm

概要 アセンブラ命令内で定義するデータのサイズを指定するための文字列を生成する 詳細 __ASM_SEL()を使用して、CONFIG_X86_32が有効な場合はlong、無効な場合はquadのサイズのデータを指定する文字列を生成する

アセンブラ命令 - _ASM_ALIGN

asm

概要 アセンブラ命令をアライメントするための文字列を生成する 詳細 __ASM_SEL()を使用して、CONFIG_X86_32が有効な場合は4bite、無効な場合は8biteのアライメントを指定する文字列を生成する

アセンブラ命令 - __ASM_SEL()

asm

概要 CPUのアーキテクチャに応じて適切なアセンブラの文字列を生成する 詳細 CONFIG_X86_32が有効な場合は第一引数を、それ以外の場合は第二引数を__ASM_FORM()に渡して実行する

アセンブラ命令 - __ASM_FORM()

asm

概要 引数の値を文字列に変換する 詳細 引数の値を文字列として前後に空白文字を連結した文字列を作る