nlib
nn::nlib::heap::CentralHeap クラスfinal

CachedHeapと対になって利用される中央ヒープクラスです。nmalloc()の実装に利用されています。 [詳解]

#include "nn/nlib/heap/CentralHeap.h"

公開メンバ関数

void * Alloc (size_t n) noexcept
 メモリブロックを確保します。 [詳解]
 
void * Alloc (size_t n, size_t algn) noexcept
 アライメントを指定してメモリブロックを確保します。 [詳解]
 
errno_t Free (void *p) noexcept
 メモリを解放します。 [詳解]
 
bool IsClean () noexcept
 ヒープの状態がメタデータも含めて初期化直後の状態と同じかチェックします。 [詳解]
 
void CalcHeapHash (HeapHash *hash) noexcept
 詳しくは、nmalloc_heaphash()をご覧下さい。 [詳解]
 
void DumpEx (NMallocDumpMode mode, nlib_fd fd) const noexcept
 詳しくは、 nmalloc_dumpex2() をご覧下さい。 [詳解]
 
void DumpEx (NMallocDumpMode mode) const noexcept
 詳しくは、nmalloc_dumpex()をご覧下さい。 [詳解]
 
void Dump () const noexcept
 DumpEx(NMALLOC_DUMP_BASIC, 1) を実行します。
 
errno_t WalkAllocatedPtrs (nmalloc_heapwalk_callback func, void *user_ptr) noexcept
 詳しくは、nmalloc_walk_allocated_ptrs()を御覧ください。
 
基本的なメンバ関数
 CentralHeap () noexcept
 デフォルトコンストラクタです。
 
 ~CentralHeap () noexcept
 デストラクタです。
 
初期化と終了
errno_t Initialize (void *start, size_t size, uint32_t heap_option) noexcept
 ヒープを初期化します。 [詳解]
 
void Finalize () noexcept
 ヒープの利用を終了し、オブジェクトの状態を初期化以前の状態に変更します。
 
bool MakeCache (CachedHeap *ptr) noexcept
 CachedHeapを初期化してこのCentralHeapに関連付けます。 [詳解]
 

静的公開変数類

static const size_t kPageSize
 ヒープのページサイズです(OSのページサイズとの関連性はありません)。
 

詳解

CachedHeapと対になって利用される中央ヒープクラスです。nmalloc()の実装に利用されています。

説明
各スレッド専用のヒープであるCachedHeapを作成することができます。 CachedHeapが中央ヒープからメモリを取得したり返却したりします。 ユーザーのメモリ確保と解放は 基本的にCachedHeapを通じて行います。 CentralHeapから直接メモリを確保することもできますが、効率は落ちます。

CentralHeap.h18 行目に定義があります。

関数詳解

nn::nlib::heap::CentralHeap::Alloc ( size_t  n)
inlinenoexcept

メモリブロックを確保します。

引数
[in]nメモリブロックのサイズ
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL

CentralHeap.h30 行目に定義があります。

nn::nlib::heap::CentralHeap::Alloc ( size_t  n,
size_t  algn 
)
noexcept

アライメントを指定してメモリブロックを確保します。

引数
[in]nメモリブロックのサイズ
[in]algnアライメント
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL
指定できるアライメントは2のべき乗である必要があります。
nn::nlib::heap::CentralHeap::CalcHeapHash ( HeapHash hash)
noexcept

詳しくは、nmalloc_heaphash()をご覧下さい。

引数
[out]hashハッシュ値が格納されるポインタ
nn::nlib::heap::CentralHeap::DumpEx ( NMallocDumpMode  mode,
nlib_fd  fd 
) const
noexcept

詳しくは、 nmalloc_dumpex2() をご覧下さい。

引数
[in]mode表示オプションです。
[in]fd表示を行うファイルディスクリプタです。1を指定した場合、標準出力になります。
nn::nlib::heap::CentralHeap::DumpEx ( NMallocDumpMode  mode) const
inlinenoexcept

詳しくは、nmalloc_dumpex()をご覧下さい。

引数
[in]mode表示オプションです。

CentralHeap.h38 行目に定義があります。

nn::nlib::heap::CentralHeap::Free ( void *  p)
noexcept

メモリを解放します。

引数
[in]p解放するメモリブロックのポインタ
戻り値
0ならば成功。0以外の場合はポインタがヒープに存在しない等のエラーが発生しています。
nn::nlib::heap::CentralHeap::Initialize ( void *  start,
size_t  size,
uint32_t  heap_option 
)
noexcept

ヒープを初期化します。

引数
[in]startヒープの開始位置のポインタです。
[in]sizeヒープのサイズです。 kPageSizeの倍数である必要があります。
[in]heap_optionヒープの構築オプションです。NMallocSettings::heap_optionを参照してください。
戻り値
0ならば初期化が成功しています。それ以外ならば失敗しています。
説明
startkPageSizeでアライメントされていない場合は、領域が切り詰められて利用されます。
nn::nlib::heap::CentralHeap::IsClean ( )
noexcept

ヒープの状態がメタデータも含めて初期化直後の状態と同じかチェックします。

戻り値
ヒープの状態が初期化直後と同じならばtrue
説明
詳しくはnmalloc_isclean()を参照してください。
nn::nlib::heap::CentralHeap::MakeCache ( CachedHeap ptr)
noexcept

CachedHeapを初期化してこのCentralHeapに関連付けます。

引数
[out]ptr初期化するCachedHeapオブジェクトへのポインタ
戻り値
成功した場合はtrueを返します。
説明
この関数が呼ばれると中央ヒープはキャッシュ領域を確保してCachedHeapと自らを関連付けます。以降はCachedHeapを用いてメモリの確保と解放を行うことが可能となります。

このクラス詳解は次のファイルから抽出されました: