1 #pragma once 2 3 #include <systypes/base.h> 4 5 #include <mutex> 6 7 #include "memory.h" 8 #include "memory_utils.h" 9 10 11 12 /* A memory pool abstraction. */ 13 14 class MemoryIncremental : public Memory 15 { 16 protected: 17 std::mutex _lock; 18 19 unsigned int _limit; 20 length_t _region_size; 21 bool _limited; 22 23 Region *allocate(length_t size); 24 25 public: 26 explicit MemoryIncremental(unsigned int limit, length_t region_size=PAGE_SIZE); 27 28 explicit MemoryIncremental(); 29 30 virtual Region *region(length_t size); 31 32 virtual Region *region(); 33 34 virtual length_t region_size() 35 { return _region_size; } 36 37 virtual void release(Region *region); 38 }; 39 40 // vim: tabstop=4 expandtab shiftwidth=4