anlsys / aml

Building Blocks for Explicit Memory Management on Complex Architectures
https://argo-aml.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
4 stars 2 forks source link

AML: Building Blocks for Memory Management

AML is a library to manage byte-addressable memory devices. The library is designed as a collection of building blocks, so that users can create custom memory management policies for allocation and placement of data across devices.

This library is still in the prototyping phase. APIs might break often.

Documentation

The latest documentation can be found online, can be installed when installing a release or generated from git clone before installing with

make -C doc doxygen

Requirements:

Installation

sh autogen.sh
./configure
make -j install

General Architecture

The architecture of the library relies on two principles: type-specific initialization functions, and generic interfaces to each building block.

The type-specific initialization functions include:

Generic interfaces all take a pointer to a building block.

Low-Level Building Blocks

Low-level building blocks provide the basic mechanisms required to implement any high-level memory management policy. This include:

High-Level Building Blocks

High-level building blocks use the low-level ones to provide fancier memory management facilities, including:

Version Management

AML versionning is similar to semantic versionning. AML version is a string composed of 3 integers separated by a dot: "0.1.0" The first integer is the major version and all versions with the same major version are supposed ABI compatible except for major version 0 which is considered unstable.