[cache_writeback] Coded, needs testing

This commit is contained in:
Joe Thornber
2016-04-14 08:54:32 +01:00
parent 4573ebb218
commit c8fec7ec40
9 changed files with 620 additions and 12 deletions

45
block-cache/mem_pool.h Normal file
View File

@@ -0,0 +1,45 @@
#ifndef BLOCK_CACHE_MEM_POOL_H
#define BLOCK_CACHE_MEM_POOL_H
#include <boost/intrusive/list.hpp>
#include <boost/optional.hpp>
#include <list>
namespace bi = boost::intrusive;
//----------------------------------------------------------------
namespace bcache {
// FIXME: move to base?
namespace mempool_detail {
struct alloc_block : public bi::list_base_hook<> {
};
};
class mempool {
public:
mempool(size_t block_size, size_t total_mem);
~mempool();
boost::optional<void *> alloc();
void free(void *data);
private:
static void *alloc_aligned(size_t len, size_t alignment);
using block_list = bi::list<mempool_detail::alloc_block>;
void *mem_;
block_list free_;
//----------------
mempool(mempool const &) = delete;
mempool &operator =(mempool const &) = delete;
};
}
//----------------------------------------------------------------
#endif