Blame test/memory_manager.h
|
Packit Service |
7f3b24 |
// SPDX-License-Identifier: BSD-2-Clause
|
|
Packit Service |
7f3b24 |
/* Copyright (C) 2017 - 2020 Intel Corporation. */
|
|
Packit |
345191 |
|
|
Packit |
345191 |
#pragma once
|
|
Packit |
345191 |
#include <memkind.h>
|
|
Packit |
345191 |
#include <new>
|
|
Packit |
345191 |
|
|
Packit |
345191 |
class MemoryManager
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
private:
|
|
Packit |
345191 |
memkind_t kind;
|
|
Packit |
345191 |
size_t memory_size;
|
|
Packit |
345191 |
void *memory_pointer;
|
|
Packit |
345191 |
|
|
Packit |
345191 |
void move(MemoryManager &&other)
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
kind = other.kind;
|
|
Packit |
345191 |
memory_size = other.memory_size;
|
|
Packit |
345191 |
if (memory_pointer)
|
|
Packit |
345191 |
memkind_free(kind, memory_pointer);
|
|
Packit |
345191 |
memory_pointer = std::move(other.memory_pointer);
|
|
Packit |
345191 |
other.memory_pointer = nullptr;
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
public:
|
|
Packit |
345191 |
MemoryManager(memkind_t kind, size_t size) :
|
|
Packit |
345191 |
kind(kind),
|
|
Packit |
345191 |
memory_size(size),
|
|
Packit |
345191 |
memory_pointer(memkind_malloc(kind, size))
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
if(!memory_pointer) {
|
|
Packit |
345191 |
throw std::bad_alloc();
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
size_t size()
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
return memory_size;
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
MemoryManager(const MemoryManager &) = delete;
|
|
Packit |
345191 |
|
|
Packit |
345191 |
MemoryManager(MemoryManager &&other)
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
move(std::move(other));
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
MemoryManager &operator=(MemoryManager &&other)
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
move(std::move(other));
|
|
Packit |
345191 |
return *this;
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
|
|
Packit |
345191 |
~MemoryManager()
|
|
Packit |
345191 |
{
|
|
Packit |
345191 |
if (memory_pointer)
|
|
Packit |
345191 |
memkind_free(kind, memory_pointer);
|
|
Packit |
345191 |
}
|
|
Packit |
345191 |
};
|
|
Packit |
345191 |
|