From a9dacd1d21b1610d7c2f620b2ef803c754e79901 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 24 Dec 2022 01:51:55 +0200 Subject: [PATCH] Renamed "Tracker" to "MemMgr" because it could be used for shared memory and more useful features --- Core/Driver/DriverLoading/BindInput.cpp | 18 +++++------ Core/Driver/DriverLoading/BindInterrupt.cpp | 36 ++++++++++----------- Core/Driver/DriverLoading/BindPCI.cpp | 30 ++++++++--------- Core/Memory/{Tracker.cpp => MemMgr.cpp} | 14 ++++---- Tasking/Task.cpp | 2 +- include/driver.hpp | 2 +- include/memory.hpp | 6 ++-- include/task.hpp | 2 +- 8 files changed, 55 insertions(+), 55 deletions(-) rename Core/Memory/{Tracker.cpp => MemMgr.cpp} (87%) diff --git a/Core/Driver/DriverLoading/BindInput.cpp b/Core/Driver/DriverLoading/BindInput.cpp index efd31e3c..c87e5629 100644 --- a/Core/Driver/DriverLoading/BindInput.cpp +++ b/Core/Driver/DriverLoading/BindInput.cpp @@ -18,8 +18,8 @@ namespace Driver { UNUSED(DrvExtHdr); UNUSED(IsElf); - Memory::Tracker *Tracker = new Memory::Tracker; - Fex *fex = (Fex *)Tracker->RequestPages(TO_PAGES(Size)); + Memory::MemMgr *MemMgr = new Memory::MemMgr; + Fex *fex = (Fex *)MemMgr->RequestPages(TO_PAGES(Size)); memcpy(fex, (void *)DriverAddress, Size); FexExtended *fexExtended = (FexExtended *)((uintptr_t)fex + EXTENDED_SECTION_ADDRESS); debug("Driver allocated at %#lx-%#lx", fex, (uintptr_t)fex + Size); @@ -30,16 +30,16 @@ namespace Driver result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]); kfree(result); #endif - KernelAPI *KAPI = (KernelAPI *)Tracker->RequestPages(TO_PAGES(sizeof(KernelAPI))); + KernelAPI *KAPI = (KernelAPI *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelAPI))); if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK) { - delete Tracker; + delete MemMgr; return DriverCode::DRIVER_RETURNED_ERROR; } debug("Starting driver %s (offset: %#lx)", fexExtended->Driver.Name, fex); - KernelCallback *KCallback = (KernelCallback *)Tracker->RequestPages(TO_PAGES(sizeof(KernelCallback))); + KernelCallback *KCallback = (KernelCallback *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelCallback))); switch (fexExtended->Driver.Type) { @@ -52,13 +52,13 @@ namespace Driver int CallbackRet = ((int (*)(KernelCallback *))((uintptr_t)fexExtended->Driver.Callback + (uintptr_t)fex))(KCallback); if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED) { - delete Tracker; + delete MemMgr; error("Driver %s does not implement the configuration callback", fexExtended->Driver.Name); break; } else if (CallbackRet != DriverReturnCode::OK) { - delete Tracker; + delete MemMgr; error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet); break; } @@ -68,7 +68,7 @@ namespace Driver DriverFile *DrvFile = new DriverFile; DrvFile->DriverUID = this->DriverUIDs - 1; DrvFile->Address = (void *)fex; - DrvFile->MemTrk = Tracker; + DrvFile->MemTrk = MemMgr; DrvFile->InterruptHook[0] = nullptr; Drivers.push_back(DrvFile); break; @@ -76,7 +76,7 @@ namespace Driver default: { warn("Unknown driver type: %d", fexExtended->Driver.Type); - delete Tracker; + delete MemMgr; break; } } diff --git a/Core/Driver/DriverLoading/BindInterrupt.cpp b/Core/Driver/DriverLoading/BindInterrupt.cpp index 6feceab4..4208cf07 100644 --- a/Core/Driver/DriverLoading/BindInterrupt.cpp +++ b/Core/Driver/DriverLoading/BindInterrupt.cpp @@ -17,8 +17,8 @@ namespace Driver DriverCode Driver::DriverLoadBindInterrupt(void *DrvExtHdr, uintptr_t DriverAddress, size_t Size, bool IsElf) { UNUSED(IsElf); - Memory::Tracker *Tracker = new Memory::Tracker; - Fex *fex = (Fex *)Tracker->RequestPages(TO_PAGES(Size)); + Memory::MemMgr *MemMgr = new Memory::MemMgr; + Fex *fex = (Fex *)MemMgr->RequestPages(TO_PAGES(Size)); memcpy(fex, (void *)DriverAddress, Size); FexExtended *fexExtended = (FexExtended *)((uintptr_t)fex + EXTENDED_SECTION_ADDRESS); debug("Driver allocated at %#lx-%#lx", fex, (uintptr_t)fex + Size); @@ -29,16 +29,16 @@ namespace Driver result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]); kfree(result); #endif - KernelAPI *KAPI = (KernelAPI *)Tracker->RequestPages(TO_PAGES(sizeof(KernelAPI))); + KernelAPI *KAPI = (KernelAPI *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelAPI))); if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK) { - delete Tracker; + delete MemMgr; return DriverCode::DRIVER_RETURNED_ERROR; } debug("Starting driver %s (offset: %#lx)", fexExtended->Driver.Name, fex); - KernelCallback *KCallback = (KernelCallback *)Tracker->RequestPages(TO_PAGES(sizeof(KernelCallback))); + KernelCallback *KCallback = (KernelCallback *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelCallback))); switch (fexExtended->Driver.Type) { @@ -48,20 +48,20 @@ namespace Driver DriverFile *DrvFile = new DriverFile; DrvFile->DriverUID = this->DriverUIDs - 1; DrvFile->Address = (void *)fex; - DrvFile->MemTrk = Tracker; + DrvFile->MemTrk = MemMgr; Drivers.push_back(DrvFile); break; } case FexDriverType::FexDriverType_Display: { fixme("Display driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Network: { fixme("Network driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Storage: @@ -75,7 +75,7 @@ namespace Driver } fixme("Not implemented"); - delete Tracker; + delete MemMgr; break; KCallback->RawPtr = nullptr; @@ -84,27 +84,27 @@ namespace Driver if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED) { error("Driver %s does not implement the configuration callback", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } else if (CallbackRet != DriverReturnCode::OK) { error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet); - delete Tracker; + delete MemMgr; break; } DriverFile *DrvFile = new DriverFile; DrvFile->DriverUID = this->DriverUIDs - 1; DrvFile->Address = (void *)fex; - DrvFile->MemTrk = Tracker; + DrvFile->MemTrk = MemMgr; Drivers.push_back(DrvFile); break; } case FexDriverType::FexDriverType_FileSystem: { fixme("Filesystem driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Input: @@ -132,14 +132,14 @@ namespace Driver { error("Driver %s does not implement the configuration callback", fexExtended->Driver.Name); delete InterruptHook; - delete Tracker; + delete MemMgr; break; } else if (CallbackRet != DriverReturnCode::OK) { error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet); delete InterruptHook; - delete Tracker; + delete MemMgr; break; } @@ -149,7 +149,7 @@ namespace Driver DriverFile *DrvFile = new DriverFile; DrvFile->DriverUID = this->DriverUIDs - 1; DrvFile->Address = (void *)fex; - DrvFile->MemTrk = Tracker; + DrvFile->MemTrk = MemMgr; DrvFile->InterruptHook[0] = InterruptHook; Drivers.push_back(DrvFile); break; @@ -157,13 +157,13 @@ namespace Driver case FexDriverType::FexDriverType_Audio: { fixme("Audio driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } default: { warn("Unknown driver type: %d", fexExtended->Driver.Type); - delete Tracker; + delete MemMgr; break; } } diff --git a/Core/Driver/DriverLoading/BindPCI.cpp b/Core/Driver/DriverLoading/BindPCI.cpp index 832211d5..7c28283d 100644 --- a/Core/Driver/DriverLoading/BindPCI.cpp +++ b/Core/Driver/DriverLoading/BindPCI.cpp @@ -32,8 +32,8 @@ namespace Driver foreach (auto PCIDevice in devices) { debug("[%ld] VendorID: %#x; DeviceID: %#x", devices.size(), PCIDevice->VendorID, PCIDevice->DeviceID); - Memory::Tracker *Tracker = new Memory::Tracker(); - Fex *fex = (Fex *)Tracker->RequestPages(TO_PAGES(Size)); + Memory::MemMgr *MemMgr = new Memory::MemMgr(); + Fex *fex = (Fex *)MemMgr->RequestPages(TO_PAGES(Size)); memcpy(fex, (void *)DriverAddress, Size); FexExtended *fexExtended = (FexExtended *)((uintptr_t)fex + EXTENDED_SECTION_ADDRESS); debug("Driver allocated at %#lx-%#lx", fex, (uintptr_t)fex + Size); @@ -44,16 +44,16 @@ namespace Driver result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]); kfree(result); #endif - KernelAPI *KAPI = (KernelAPI *)Tracker->RequestPages(TO_PAGES(sizeof(KernelAPI))); + KernelAPI *KAPI = (KernelAPI *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelAPI))); if (CallDriverEntryPoint(fex, KAPI) != DriverCode::OK) { - delete Tracker; + delete MemMgr; return DriverCode::DRIVER_RETURNED_ERROR; } debug("Starting driver %s", fexExtended->Driver.Name); - KernelCallback *KCallback = (KernelCallback *)Tracker->RequestPages(TO_PAGES(sizeof(KernelCallback))); + KernelCallback *KCallback = (KernelCallback *)MemMgr->RequestPages(TO_PAGES(sizeof(KernelCallback))); debug("Type: %d; IOBase: %#x; MemoryBase: %#x", ((PCI::PCIHeader0 *)PCIDevice)->BAR0 & 1, @@ -86,13 +86,13 @@ namespace Driver case FexDriverType::FexDriverType_Generic: { fixme("Generic driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Display: { fixme("Display driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Network: @@ -107,7 +107,7 @@ namespace Driver if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED) { error("Driver %s does not implement the configuration callback", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; delete InterruptHook; continue; } @@ -116,7 +116,7 @@ namespace Driver else { error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet); - delete Tracker; + delete MemMgr; delete InterruptHook; continue; } @@ -139,7 +139,7 @@ namespace Driver if (CallbackRet == DriverReturnCode::NOT_IMPLEMENTED) { error("Driver %s does not implement the configuration callback", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; continue; } else if (CallbackRet == DriverReturnCode::OK) @@ -147,7 +147,7 @@ namespace Driver else { error("Driver %s returned error %d", fexExtended->Driver.Name, CallbackRet); - delete Tracker; + delete MemMgr; continue; } @@ -161,25 +161,25 @@ namespace Driver case FexDriverType::FexDriverType_FileSystem: { fixme("Filesystem driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Input: { fixme("Input driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } case FexDriverType::FexDriverType_Audio: { fixme("Audio driver: %s", fexExtended->Driver.Name); - delete Tracker; + delete MemMgr; break; } default: { warn("Unknown driver type: %d", fexExtended->Driver.Type); - delete Tracker; + delete MemMgr; break; } } diff --git a/Core/Memory/Tracker.cpp b/Core/Memory/MemMgr.cpp similarity index 87% rename from Core/Memory/Tracker.cpp rename to Core/Memory/MemMgr.cpp index 641a0d18..34bde436 100644 --- a/Core/Memory/Tracker.cpp +++ b/Core/Memory/MemMgr.cpp @@ -3,7 +3,7 @@ namespace Memory { - uint64_t Tracker::GetAllocatedMemorySize() + uint64_t MemMgr::GetAllocatedMemorySize() { uint64_t Size = 0; foreach (auto var in AllocatedPagesList) @@ -11,7 +11,7 @@ namespace Memory return FROM_PAGES(Size); } - void *Tracker::RequestPages(size_t Count) + void *MemMgr::RequestPages(size_t Count) { void *Address = KernelAllocator.RequestPages(Count); for (size_t i = 0; i < Count; i++) @@ -20,7 +20,7 @@ namespace Memory return Address; } - void Tracker::FreePages(void *Address, size_t Count) + void MemMgr::FreePages(void *Address, size_t Count) { for (size_t i = 0; i < AllocatedPagesList.size(); i++) if (AllocatedPagesList[i].Address == Address) @@ -41,16 +41,16 @@ namespace Memory } } - Tracker::Tracker(PageTable4 *PageTable) + MemMgr::MemMgr(PageTable4 *PageTable) { if (PageTable) this->PageTable = PageTable; else this->PageTable = (PageTable4 *)CPU::x64::readcr3().raw; - debug("Tracker initialized."); + debug("MemMgr initialized."); } - Tracker::~Tracker() + MemMgr::~MemMgr() { foreach (auto var in AllocatedPagesList) { @@ -58,6 +58,6 @@ namespace Memory for (size_t i = 0; i < var.PageCount; i++) Memory::Virtual(this->PageTable).Remap((void *)((uintptr_t)var.Address + (i * PAGE_SIZE)), (void *)((uintptr_t)var.Address + (i * PAGE_SIZE)), Memory::PTFlag::RW); } - debug("Tracker destroyed."); + debug("MemMgr destroyed."); } } diff --git a/Tasking/Task.cpp b/Tasking/Task.cpp index c0a79da3..89caf08c 100644 --- a/Tasking/Task.cpp +++ b/Tasking/Task.cpp @@ -762,7 +762,7 @@ namespace Tasking case TaskTrustLevel::User: { Thread->Stack = new Memory::StackGuard(true, Parent->PageTable); - Thread->Memory = new Memory::Tracker(Parent->PageTable); + Thread->Memory = new Memory::MemMgr(Parent->PageTable); #if defined(__amd64__) SecurityManager.TrustToken(Thread->Security.UniqueToken, TokenTrustLevel::Untrusted); Thread->GSBase = 0; diff --git a/include/driver.hpp b/include/driver.hpp index 8f26644e..1a9040a3 100644 --- a/include/driver.hpp +++ b/include/driver.hpp @@ -47,7 +47,7 @@ namespace Driver { unsigned long DriverUID; void *Address; - Memory::Tracker *MemTrk; + Memory::MemMgr *MemTrk; DriverInterruptHook *InterruptHook[16]; }; diff --git a/include/memory.hpp b/include/memory.hpp index ee8a43fb..01c8db38 100644 --- a/include/memory.hpp +++ b/include/memory.hpp @@ -631,7 +631,7 @@ namespace Memory ~StackGuard(); }; - class Tracker + class MemMgr { private: Bitmap PageBitmap; @@ -651,8 +651,8 @@ namespace Memory void *RequestPages(size_t Count); void FreePages(void *Address, size_t Count); - Tracker(PageTable4 *PageTable = nullptr); - ~Tracker(); + MemMgr(PageTable4 *PageTable = nullptr); + ~MemMgr(); }; } diff --git a/include/task.hpp b/include/task.hpp index af8a8da9..af1510c4 100644 --- a/include/task.hpp +++ b/include/task.hpp @@ -89,7 +89,7 @@ namespace Tasking IPOffset Offset; int ExitCode; Memory::StackGuard *Stack; - Memory::Tracker *Memory; + Memory::MemMgr *Memory; TaskStatus Status; #if defined(__amd64__) CPU::x64::TrapFrame Registers;