linuxのメモ

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

メモリ割り当て - kmalloc_slab()

概要

パラメータのサイズに応じた大きさのkmem_cache構造体を返す

詳細

メモリの割当要求サイズ(size)に応じて以下のとおりに処理内容が変わる

  • size == 0
    • ZERO_SIZE_PTRを返す
  • 0 < size <= KMALLOC_MAX_SIZE
    • size <= 192
      • sizeを元にsize_index配列から適切なインデックスを取得する
    • 192 < size
    • CONFIG_ZONE_DMA が有効な場合
      • kmalloc_dma_cachesから上で取得したindexのkmem_cache構造体のポインタを返す
  • size < KMALLOC_MAX_SIZE
    • NULLを返す
    • flagに__GFP_NOWARNが含まれていなければWARN_ON_ONCE()でwarningを出力