8#include <botan/locking_allocator.h>
9#include <botan/internal/os_utils.h>
10#include <botan/internal/mem_pool.h>
19 const size_t n = num_elems * elem_size;
20 if(n / elem_size != num_elems)
23 return m_pool->allocate(n);
31 size_t n = num_elems * elem_size;
37 if(n / elem_size != num_elems)
40 return m_pool->deallocate(p, n);
43mlock_allocator::mlock_allocator()
48 if(mem_to_lock > 0 && mem_to_lock % page_size == 0)
52 if(m_locked_pages.size() > 0)
54 m_pool.reset(
new Memory_Pool(m_locked_pages, page_size));
59mlock_allocator::~mlock_allocator()
static mlock_allocator & instance()
bool deallocate(void *p, size_t num_elems, size_t elem_size) noexcept
void * allocate(size_t num_elems, size_t elem_size)
size_t get_memory_locking_limit()
std::vector< void * > allocate_locked_pages(size_t count)
size_t system_page_size()
void free_locked_pages(const std::vector< void * > &pages)