1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/memory/memory_preallocated.h Sat Mar 27 22:12:12 2021 +0100
1.3 @@ -0,0 +1,36 @@
1.4 +#pragma once
1.5 +
1.6 +#include <systypes/base.h>
1.7 +
1.8 +#include <list>
1.9 +#include <mutex>
1.10 +
1.11 +#include "memory.h"
1.12 +
1.13 +
1.14 +
1.15 +/* A memory pool abstraction. */
1.16 +
1.17 +class MemoryPreallocated : public Memory
1.18 +{
1.19 +protected:
1.20 + std::mutex _lock;
1.21 + std::list<Region *> _regions;
1.22 +
1.23 + Memory *_memory;
1.24 + offset_t _amount;
1.25 +
1.26 +public:
1.27 + explicit MemoryPreallocated(Memory *memory, offset_t amount);
1.28 +
1.29 + explicit MemoryPreallocated();
1.30 +
1.31 + virtual Region *region();
1.32 +
1.33 + virtual offset_t region_size()
1.34 + { return _memory->region_size(); }
1.35 +
1.36 + virtual void release(Region *region);
1.37 +};
1.38 +
1.39 +// vim: tabstop=4 expandtab shiftwidth=4