diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2021-09-11 11:38:50 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-11 20:38:50 +0200 |
| commit | ea42afb6f8a29f3a279b34efffcca365e308ca1e (patch) | |
| tree | dea08a4b27e04f178663dd4486e73a54ae62cd1f /include/JSystem/JKernel | |
| parent | f25c24699bf57f8cfee8e959e998cc82ccb32b36 (diff) | |
JKRExpHeap (#146)
Diffstat (limited to 'include/JSystem/JKernel')
| -rw-r--r-- | include/JSystem/JKernel/JKRExpHeap.h | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/include/JSystem/JKernel/JKRExpHeap.h b/include/JSystem/JKernel/JKRExpHeap.h index eeeab96a39..d2e93baa53 100644 --- a/include/JSystem/JKernel/JKRExpHeap.h +++ b/include/JSystem/JKernel/JKRExpHeap.h @@ -7,21 +7,24 @@ class JKRExpHeap : public JKRHeap { public: class CMemBlock { + friend class JKRExpHeap; + public: void initiate(CMemBlock*, CMemBlock*, u32, u8, u8); - void allocFore(u32, u8, u8, u8, u8); - void allocBack(u32, u8, u8, u8, u8); - void free(JKRExpHeap*); - void getHeapBlock(void*); + JKRExpHeap::CMemBlock* allocFore(u32, u8, u8, u8, u8); + JKRExpHeap::CMemBlock* allocBack(u32, u8, u8, u8, u8); + int free(JKRExpHeap*); + static CMemBlock* getHeapBlock(void*); void newGroupId(u8 groupId) { this->mGroupId = groupId; } - bool isValid() const { return this->mMagic == 0x484d; } + bool isValid() const { return this->mMagic == 'HM'; } bool _isTempMemBlock() const { return (this->mFlags & 0x80) ? true : false; } int getAlignment() const { return this->mFlags & 0x7f; } void* getContent() const { return (void*)(this + 1); } CMemBlock* getPrevBlock() const { return this->mPrev; } CMemBlock* getNextBlock() const { return this->mNext; } u32 getSize() const { return this->size; } + u8 getGroupId() const { return this->mGroupId; } static CMemBlock* getBlock(void* data) { return (CMemBlock*)((u32)data + -0x10); } private: @@ -32,15 +35,16 @@ public: CMemBlock* mPrev; CMemBlock* mNext; }; + friend class CMemBlock; protected: JKRExpHeap(void*, u32, JKRHeap*, bool); virtual ~JKRExpHeap(); - void allocFromHead(u32, int); - void allocFromHead(u32); - void allocFromTail(u32, int); - void allocFromTail(u32); + void* allocFromHead(u32, int); + void* allocFromHead(u32); + void* allocFromTail(u32, int); + void* allocFromTail(u32); void appendUsedList(CMemBlock*); void setFreeBlock(CMemBlock*, CMemBlock*, CMemBlock*); void removeFreeBlock(CMemBlock*); @@ -76,9 +80,11 @@ public: JKRHeap::TState const&) const; /* override */ u8 field_0x6c; + u8 mCurrentGroupId; + bool field_0x6e; private: - u32 field_0x70; + void* field_0x70; u32 field_0x74; CMemBlock* mHeadFreeList; CMemBlock* mTailFreeList; @@ -91,8 +97,8 @@ public: static JKRExpHeap* create(void*, u32, JKRHeap*, bool); }; -inline JKRExpHeap* JKRCreateExpHeap(u32 param_0, JKRHeap* param_1, bool param_2) { - return JKRExpHeap::create(param_0, param_1, param_2); +inline JKRExpHeap* JKRCreateExpHeap(u32 size, JKRHeap* parent, bool errorFlag) { + return JKRExpHeap::create(size, parent, errorFlag); } #endif /* JKREXPHEAP_H */ |
