mirror of
https://github.com/momo5502/hypervisor.git
synced 2025-04-20 22:15:44 +00:00
39 lines
587 B
C++
39 lines
587 B
C++
#pragma once
|
|
#include "memory.hpp"
|
|
|
|
namespace utils
|
|
{
|
|
template <typename T>
|
|
concept is_allocator = requires(size_t size, void* ptr)
|
|
{
|
|
T().free(T().allocate(size));
|
|
T().free(ptr);
|
|
};
|
|
|
|
struct AlignedAllocator
|
|
{
|
|
void* allocate(const size_t size)
|
|
{
|
|
return memory::allocate_aligned_memory(size);
|
|
}
|
|
|
|
void free(void* ptr)
|
|
{
|
|
memory::free_aligned_memory(ptr);
|
|
}
|
|
};
|
|
|
|
struct NonPagedAllocator
|
|
{
|
|
void* allocate(const size_t size)
|
|
{
|
|
return memory::allocate_non_paged_memory(size);
|
|
}
|
|
|
|
void free(void* ptr)
|
|
{
|
|
memory::free_non_paged_memory(ptr);
|
|
}
|
|
};
|
|
}
|