diff --git a/Kernel/core/driver/api.cpp b/Kernel/core/driver/api.cpp index d7b3add1..08343d23 100644 --- a/Kernel/core/driver/api.cpp +++ b/Kernel/core/driver/api.cpp @@ -451,29 +451,13 @@ namespace v0 void *AllocateMemory(dev_t DriverID, size_t Pages) { dbg_api("%d, %d", DriverID, Pages); - - std::unordered_map &Drivers = - DriverManager->GetDrivers(); - - auto itr = Drivers.find(DriverID); - assert(itr != Drivers.end()); - - void *ptr = itr->second.vma->RequestPages(Pages); - memset(ptr, 0, FROM_PAGES(Pages)); - return ptr; + return DriverManager->AllocateMemory(DriverID, Pages); } void FreeMemory(dev_t DriverID, void *Pointer, size_t Pages) { dbg_api("%d, %#lx, %d", DriverID, Pointer, Pages); - - std::unordered_map &Drivers = - DriverManager->GetDrivers(); - - auto itr = Drivers.find(DriverID); - assert(itr != Drivers.end()); - - itr->second.vma->FreePages(Pointer, Pages); + DriverManager->FreeMemory(DriverID, Pointer, Pages); } void *MemoryCopy(dev_t DriverID, void *Destination, const void *Source, size_t Length) diff --git a/Kernel/core/driver/daemon.cpp b/Kernel/core/driver/daemon.cpp index 1c9f20c5..1f662843 100644 --- a/Kernel/core/driver/daemon.cpp +++ b/Kernel/core/driver/daemon.cpp @@ -766,6 +766,22 @@ namespace Driver return 0; } + void *Manager::AllocateMemory(dev_t DriverID, size_t Pages) + { + auto itr = Drivers.find(DriverID); + assert(itr != Drivers.end()); + void *ptr = itr->second.vma->RequestPages(Pages); + memset(ptr, 0, FROM_PAGES(Pages)); + return ptr; + } + + void Manager::FreeMemory(dev_t DriverID, void *Pointer, size_t Pages) + { + auto itr = Drivers.find(DriverID); + assert(itr != Drivers.end()); + itr->second.vma->FreePages(Pointer, Pages); + } + int Manager::ReportInputEvent(dev_t DriverID, InputReport *Report) { std::unordered_map &drivers = diff --git a/Kernel/include/driver.hpp b/Kernel/include/driver.hpp index 6333dd6e..53ba00f5 100644 --- a/Kernel/include/driver.hpp +++ b/Kernel/include/driver.hpp @@ -153,6 +153,9 @@ namespace Driver int UnregisterDevice(dev_t DriverID, dev_t Device); + void *AllocateMemory(dev_t DriverID, size_t Pages); + void FreeMemory(dev_t DriverID, void *Pointer, size_t Pages); + Manager(); ~Manager(); };