nlib
CentralHeap.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_HEAP_CENTRALHEAP_H_
4 #define INCLUDE_NN_NLIB_HEAP_CENTRALHEAP_H_
5 
6 #include "nn/nlib/heap/NMalloc.h"
7 
8 #if defined(_MSC_VER) && defined(nx_heap_EXPORTS)
9 #undef NLIB_VIS_PUBLIC
10 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
11 #endif
12 
13 NLIB_NAMESPACE_BEGIN
14 namespace heap {
15 
16 class CachedHeap;
17 class TlsHeapCentral;
19  public:
20  typedef void (*DestructorHandler)(void* start, void* end);
21 
22  CentralHeap() NLIB_NOEXCEPT : m_Central(NULL),
23  m_UseVirtualMemory(false),
24  m_HeapOption(0),
25  m_Start(NULL),
26  m_End(NULL) {}
27  ~CentralHeap() NLIB_NOEXCEPT { this->Finalize(); }
28  errno_t Initialize(void* start, size_t size, uint32_t heap_option) NLIB_NOEXCEPT;
29  void Finalize() NLIB_NOEXCEPT;
30  NLIB_ALWAYS_INLINE void* Alloc(size_t n) NLIB_NOEXCEPT { return this->Alloc(n, 8); }
31  void* Alloc(size_t n, size_t algn) NLIB_NOEXCEPT;
32  errno_t Free(void* p) NLIB_NOEXCEPT;
33 
34  bool IsClean() NLIB_NOEXCEPT;
35  bool MakeCache(CachedHeap* ptr) NLIB_NOEXCEPT;
36  void CalcHeapHash(HeapHash* hash) NLIB_NOEXCEPT;
37  void DumpEx(NMallocDumpMode mode, nlib_fd fd) const NLIB_NOEXCEPT;
38  void DumpEx(NMallocDumpMode mode) const NLIB_NOEXCEPT { DumpEx(mode, 1); }
39  void Dump() const NLIB_NOEXCEPT { DumpEx(NMALLOC_DUMP_BASIC, 1); }
40  errno_t WalkAllocatedPtrs(nmalloc_heapwalk_callback func, void* user_ptr) NLIB_NOEXCEPT;
41  static const size_t kPageSize;
42 
43  private:
44  TlsHeapCentral* m_Central;
45  bool m_UseVirtualMemory;
46  uint32_t m_HeapOption;
47  uint8_t* m_Start;
48  uint8_t* m_End;
50 };
51 
52 } // namespace heap
53 NLIB_NAMESPACE_END
54 
55 #if defined(_MSC_VER) && defined(nx_heap_EXPORTS)
56 #undef NLIB_VIS_PUBLIC
57 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
58 #endif
59 
60 #endif // INCLUDE_NN_NLIB_HEAP_CENTRALHEAP_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
int(* nmalloc_heapwalk_callback)(void *allocated_ptr, size_t size, void *user_ptr)
nmalloc_walk_allocated_ptrs()から呼び出されるユーザー定義のコールバック関数です。 ...
Definition: NMalloc.h:67
void Dump() const noexcept
DumpEx(NMALLOC_DUMP_BASIC, 1) を実行します。
Definition: CentralHeap.h:39
CentralHeap() noexcept
デフォルトコンストラクタです。
Definition: CentralHeap.h:22
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:126
nmalloc/nfree等が宣言されているファイルです。
~CentralHeap() noexcept
デストラクタです。
Definition: CentralHeap.h:27
static const size_t kPageSize
ヒープのページサイズです(OSのページサイズとの関連性はありません)。
Definition: CentralHeap.h:41
CachedHeapと対になって利用される中央ヒープクラスです。nmalloc()の実装に利用されています。 ...
Definition: CentralHeap.h:18
void DumpEx(NMallocDumpMode mode) const noexcept
詳しくは、nmalloc_dumpex()をご覧下さい。
Definition: CentralHeap.h:38
void * Alloc(size_t n) noexcept
メモリブロックを確保します。
Definition: CentralHeap.h:30
int nlib_fd
(nlib独自の)ファイルディスクリプタで、32bit整数です。
Definition: Platform.h:1051
基本的な情報のみを表示します。
Definition: NMalloc.h:61
CentralHeapと対になって利用されるスレッド専用キャッシュクラスです。
Definition: CachedHeap.h:19
#define NLIB_ALWAYS_INLINE
コンパイラに関数をインライン展開するように強く示します。
Definition: Platform_unix.h:59
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
NMallocDumpMode
nmalloc_dumpex()関数に渡す引数の型です。
Definition: NMalloc.h:60
ユーザーが利用しているヒープ内のメモリの利用状況のサマリが記述される構造体です。
Definition: NMalloc.h:31
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24