Lumiera  0.pre.03
»edit your freedom«
extent-family.hpp File Reference

Go to the source code of this file.

Description

Memory management scheme for cyclically used memory extents.

In this context, Extent denotes a larger block of memory to hold a cluster of smaller records, which are closely interrelated and will be managed and de-allocated together. The typical usage involves a constant demand for further memory, with is satisfied by putting further unused extents into use; older extents will fall out of use eventually, and can then be placed back into a buffer of free extents. In accordance to overall demand, this reserve buffer can be scaled up and down to avoid holding larger amounts of unused memory, while the availability of a baseline amount of memory can be enforced.

See also
ExtentFamily_test
gear::BlockFlow usage example

Definition in file extent-family.hpp.

#include "vault/common.hpp"
#include "lib/uninitialised-storage.hpp"
#include "lib/iter-adapter.hpp"
#include "lib/nocopy.hpp"
#include "lib/util.hpp"
#include <algorithm>
#include <memory>
#include <vector>
#include <array>

Classes

struct  ExtentFamily< T, siz >::Extent
 logical structure of a memory Extent More...
 
struct  ExtentDiagnostic< T, siz >
 
struct  ExtentDiagnostic< T, siz >
 
class  ExtentFamily< T, siz >
 Memory manager to provide a sequence of Extents for cyclic usage. More...
 
struct  ExtentFamily< T, siz >::IdxLink
 Iteration »State Core« based on Extents index position. More...
 
struct  ExtentFamily< T, siz >::Storage
 Entry in the Extents management datastructure. More...
 

Functions

template<typename T , size_t siz>
ExtentDiagnostic< T, siz > watch (ExtentFamily< T, siz > &extentFamily)
 

Variables

const size_t ALLOC_SAFETY_LIMIT = 8_GiB
 

Namespaces

 vault
 Vault-Layer implementation namespace root.
 
 vault::mem
 Memory Management.