diff --git a/include/mem.h b/include/mem.h index 61d53312..509a4416 100644 --- a/include/mem.h +++ b/include/mem.h @@ -38,6 +38,7 @@ HostPt MEM_GetBlockPage(void); Bitu MEM_FreeTotal(void); //Free 4 kb pages Bitu MEM_FreeLargest(void); //Largest free 4 kb pages block Bitu MEM_TotalPages(void); //Total amount of 4 kb pages +Bitu MEM_AllocatedPages(MemHandle handle); // amount of allocated pages of handle MemHandle MEM_AllocatePages(Bitu pages,bool sequence); PhysPt MEM_AllocatePage(void); void MEM_ReleasePages(MemHandle handle); diff --git a/src/hardware/memory.cpp b/src/hardware/memory.cpp index d10e41cc..94e5b51a 100644 --- a/src/hardware/memory.cpp +++ b/src/hardware/memory.cpp @@ -468,7 +468,6 @@ Bitu MEM_FreeLargest(void) { return largest; } - Bitu MEM_FreeTotal(void) { Bitu free=0; Bitu index=XMS_START; @@ -479,6 +478,15 @@ Bitu MEM_FreeTotal(void) { return free; } +Bitu MEM_AllocatedPages(MemHandle handle) +{ + Bitu pages = 0; + while (handle>0) { + pages++; + handle=memory.entries[handle].next_handle; + } + return pages; +} //TODO Maybe some protection for this whole allocation scheme