OROCHI
 
Loading...
Searching...
No Matches
GxMemory.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_CORE_NAMESPACE_BEGIN()
14
15//===========================================================================
17// 低レベルのメモリ確保 (一般的には malloc()) API のラッパーです。
18// メモリ確保は各種アロケータから行われるべきであり、特別な理由が無い限り
19// この関数を使用するべきでは無い。
20//===========================================================================
22{
23 //-----------------------------------------------------------
25 //-----------------------------------------------------------
27public:
29 enum class TYPE
30 {
31 VIRTUAL,
32#if defined(_NX64)
33 PHYSICAL,
34#elif defined(_PS4)
35 WB_ONION,
36 WC_GARLIC,
37#elif defined(_PS5)
38 C,
39 C_SHARED,
40#endif //_PS5
41 UNKNOWN,
42 MAX,
43 };
44#if GX_DEVELOP
46 GX_ENUM_TABLE_MAX(TYPE)
47#endif //GX_DEVELOP
48
72
74 //-----------------------------------------------------------
76 //-----------------------------------------------------------
78
79private:
81 GxMemory(void) {}
83 ~GxMemory(void) {}
84
86 //-----------------------------------------------------------
88 //-----------------------------------------------------------
90
91public:
93 static void* allocateMemory(TYPE type, size_t size, ALIGNMENT alignment = ALIGNMENT::_16);
95 static void freeMemory(TYPE type, void* pAddress);
97 static u64 getAvailableSize(void);
98#if GX_DEVELOP
100 static void printMemoryInformation(void);
101#endif // GX_DEVELOP
102
104 static void memsetFast(void* pDst, u32 value, size_t size);
106 static void memsetFast4(void* pDst, u32 value, size_t size);
108 static void memsetFast16(void* pDst, u32 value, size_t size);
109
111 static void memcpyFast(void* pDst, const void* pSrc, size_t size);
113 static void memcpyFast4(void* pDst, const void* pSrc, size_t size);
115 static void memcpyFast16(void* pDst, const void* pSrc, size_t size);
116
118 static s32 memcmpFast(const void* pPtr1, const void* pPtr2, size_t size);
120 static s32 memcmpFast4(const void* pPtr1, const void* pPtr2, size_t size);
122 static s32 memcmpFast16(const void* pPtr1, const void* pPtr2, size_t size);
123
125 //-----------------------------------------------------------
127 //-----------------------------------------------------------
129private:
130 static GxCriticalSection _criticalSection;
131
133};
134
135GX_CORE_NAMESPACE_END()
@ MAX
定義数
@ _4
ビュー4
@ _32
32ビットインデックス
@ UNKNOWN
未定義
@ _16
16ビットインデックス
クリティカルセクションクラス
Definition GxThread.h:20
static constexpr u32 VALUE_32
32
Definition GxMath.h:124
static constexpr u32 VALUE_4
4
Definition GxMath.h:121
static constexpr u32 VALUE_256K
256K
Definition GxMath.h:137
static constexpr u32 VALUE_512
512
Definition GxMath.h:128
static constexpr u32 VALUE_128K
128K
Definition GxMath.h:136
static constexpr u32 VALUE_1K
1K
Definition GxMath.h:129
static constexpr u32 VALUE_2K
2K
Definition GxMath.h:130
static constexpr u32 VALUE_16
16
Definition GxMath.h:123
static constexpr u32 VALUE_16K
16K
Definition GxMath.h:133
static constexpr u32 VALUE_256
256
Definition GxMath.h:127
static constexpr u32 VALUE_1M
1M
Definition GxMath.h:139
static constexpr u32 VALUE_4K
4K
Definition GxMath.h:131
static constexpr u32 VALUE_32K
32K
Definition GxMath.h:134
static constexpr u32 VALUE_64K
64K
Definition GxMath.h:135
static constexpr u32 VALUE_512K
512K
Definition GxMath.h:138
static constexpr u32 VALUE_8
8
Definition GxMath.h:122
static constexpr u32 VALUE_128
128
Definition GxMath.h:126
static constexpr u32 VALUE_8K
8K
Definition GxMath.h:132
static constexpr u32 VALUE_64
64
Definition GxMath.h:125
メモリークラス
Definition GxMemory.h:22
ALIGNMENT
メモリアライメント定義
Definition GxMemory.h:51
TYPE
割り当てメモリ種別
Definition GxMemory.h:30