24 lines
571 B
C++
24 lines
571 B
C++
// Copyright (c) Vitaliy Filippov, 2023+
|
|
// License: VNPL-1.1 or GNU GPL-2.0+ (see README.md for details)
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <vector>
|
|
|
|
struct freelist_item_t
|
|
{
|
|
uint64_t start, size;
|
|
};
|
|
|
|
// Really trivial freelist allocator
|
|
// Should be fine for remote RDMA memory management because
|
|
// most of the time fragmentation shouldn't be an issue as all
|
|
// memory regions are short-lived
|
|
struct freelist_allocator_t
|
|
{
|
|
std::vector<freelist_item_t> freelist;
|
|
uint64_t alloc(uint64_t data_size);
|
|
void free(uint64_t start, uint64_t size);
|
|
};
|