]> Chaos Git - corbenik/ctrulib.git/commitdiff
Add linearSpaceFree() for retrieving the free space in the linear heap
authorfincs <fincs.alt1@gmail.com>
Mon, 3 Nov 2014 19:20:33 +0000 (20:20 +0100)
committerfincs <fincs.alt1@gmail.com>
Mon, 3 Nov 2014 19:20:33 +0000 (20:20 +0100)
libctru/include/3ds/linear.h
libctru/source/allocator/linear.cpp
libctru/source/allocator/mem_pool.cpp
libctru/source/allocator/mem_pool.h

index f42a8b9c44314f57ceaf31a8a03a088eb4ca07c0..ae4c915c71c20a70cb9df87d6ceca28601254002 100644 (file)
@@ -4,3 +4,4 @@
 void* linearAlloc(size_t size);
 void* linearRealloc(void* mem, size_t size);
 void linearFree(void* mem);
+u32 linearSpaceFree(); // get free linear space in bytes
index a7581e864a3513bcfb0b518f32a4155282c4b448..83d1143ae01d7cdbc0c650460e24b6a6d732a932 100644 (file)
@@ -48,3 +48,8 @@ void linearFree(void* mem)
        auto pChunk = (MemChunk*)((u8*)mem - 16);
        sLinearPool.Deallocate(*pChunk);
 }
+
+u32 linearSpaceFree()
+{
+       return sLinearPool.GetFreeSpace();
+}
index 93eeb4fd1f691a656fba243c97e3fd257f3d60e1..2c326385da93254bf8422ef8101a4df18981fd50 100644 (file)
@@ -123,3 +123,11 @@ void MemPool::Dump(const char* title)
                printf("  - %p (%u bytes)\n", b->base, b->size);
 }
 */
+
+u32 MemPool::GetFreeSpace()
+{
+       u32 acc = 0;
+       for (auto b = first; b; b = b->next)
+               acc += b->size;
+       return acc;
+}
index 7237f49883867b756f1892f40476e3b2edb979ef..b75d1952a42536a200e5dcc0167926fc5d741a0f 100644 (file)
@@ -85,4 +85,5 @@ struct MemPool
        }
 
        //void Dump(const char* title);
+       u32 GetFreeSpace();
 };