memory
概要 任意の大きさのメモリを初期化する 詳細 CONFIG_X86_32が有効(32bitモード) __KERNEL__が定義済み(カーネル内の呼び出し) __GNUC__のバージョンが4以上 コンパイラのデフォルト関数である__builtin_memset()を実行 4未満 __builtin_constant_p()でセッ…
概要 任意の大きさのメモリを初期化する 詳細 このマクロでは以下の引数を受け取る 初期化するメモリのアドレスを示す : s 初期化する値のアドレスを示す : c 初期化するメモリの大きさを示す : count __builtin_constant_p()関数でcountの値が定数か確認し…
概要 任意の大きさのメモリを初期化する 詳細 この関数では以下の引数を受け取る 初期化するメモリへのポインタ : s 初期化する値へのポインタ : c 初期化するメモリの大きさ : count 拡張インラインアセンブラで以下の処理を行う sをediレジスタに、cをeax…
概要 任意の大きさのメモリを初期化する 詳細 この関数では以下の引数を受け取る 初期化するメモリへのポインタ : s 初期化する値へのポインタ : pattern 初期化するメモリの大きさ : count countの値が0 - 4の場合は、sのアドレスの値をpatternの値でcount…
概要 任意の大きさのメモリを初期化する 詳細 このマクロでは以下の引数を受け取る 初期化するメモリのアドレスを示す : s(rdiレジスタ) 初期化する値のアドレスを示す : c(rsiレジスタ) 初期化するメモリの大きさを示す : count(rdxレジスタ) レジスタへの…
概要 任意の大きさのメモリを初期化する 詳細 __memset_generic()のwrapperマクロ
概要 任意の大きさのメモリを初期化する 詳細 この関数では以下の引数を受け取る 初期化するメモリのアドレスを示す : s 初期化する値のアドレスを示す : c 初期化するメモリの大きさを示す : count 拡張インラインアセンブラにより引数を以下のようにレジス…
概要 rdiレジスタの指すアドレスからrdxレジスタの値分のメモリを初期化する 詳細 最初に以下の操作を行い処理の準備を行う rdiレジスタに格納されている保存先のアドレスをr9レジスタに退避 対象の文字列へのアドレスが保持されているsilレジスタ(rsiレジス…
概要 rdiレジスタの指すアドレスからrdxレジスタの値分のメモリを初期化する 詳細 1: ecxレジスタにsilレジスタの値を、raxレジスタに0x0101010101010101とsilレジスタの値の積をそれぞれ保存し、rdiレジスタの下位3bitが0でなければ以下の処理を行う rdxレ…
概要 パラメータのサイズに応じた大きさのkmem_cache構造体を返す 詳細 メモリの割当要求サイズ(size)に応じて以下のとおりに処理内容が変わる size == 0 ZERO_SIZE_PTRを返す 0 < size <= KMALLOC_MAX_SIZE size <= 192 sizeを元にsize_index配列から適切な…