mirror of
https://github.com/EnderIce2/Fennix.git
synced 2025-05-30 00:07:59 +00:00
refactor(driver/api): delegate memory allocation and deallocation to DriverManager
Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
parent
adba9cc348
commit
ae2617dca2
@ -451,29 +451,13 @@ namespace v0
|
|||||||
void *AllocateMemory(dev_t DriverID, size_t Pages)
|
void *AllocateMemory(dev_t DriverID, size_t Pages)
|
||||||
{
|
{
|
||||||
dbg_api("%d, %d", DriverID, Pages);
|
dbg_api("%d, %d", DriverID, Pages);
|
||||||
|
return DriverManager->AllocateMemory(DriverID, Pages);
|
||||||
std::unordered_map<dev_t, Driver::DriverObject> &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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeMemory(dev_t DriverID, void *Pointer, size_t Pages)
|
void FreeMemory(dev_t DriverID, void *Pointer, size_t Pages)
|
||||||
{
|
{
|
||||||
dbg_api("%d, %#lx, %d", DriverID, Pointer, Pages);
|
dbg_api("%d, %#lx, %d", DriverID, Pointer, Pages);
|
||||||
|
DriverManager->FreeMemory(DriverID, Pointer, Pages);
|
||||||
std::unordered_map<dev_t, Driver::DriverObject> &Drivers =
|
|
||||||
DriverManager->GetDrivers();
|
|
||||||
|
|
||||||
auto itr = Drivers.find(DriverID);
|
|
||||||
assert(itr != Drivers.end());
|
|
||||||
|
|
||||||
itr->second.vma->FreePages(Pointer, Pages);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void *MemoryCopy(dev_t DriverID, void *Destination, const void *Source, size_t Length)
|
void *MemoryCopy(dev_t DriverID, void *Destination, const void *Source, size_t Length)
|
||||||
|
@ -766,6 +766,22 @@ namespace Driver
|
|||||||
return 0;
|
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)
|
int Manager::ReportInputEvent(dev_t DriverID, InputReport *Report)
|
||||||
{
|
{
|
||||||
std::unordered_map<dev_t, Driver::DriverObject> &drivers =
|
std::unordered_map<dev_t, Driver::DriverObject> &drivers =
|
||||||
|
@ -153,6 +153,9 @@ namespace Driver
|
|||||||
|
|
||||||
int UnregisterDevice(dev_t DriverID, dev_t Device);
|
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();
|
||||||
~Manager();
|
~Manager();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user