diff options
Diffstat (limited to 'docs/allocator.md')
| -rw-r--r-- | docs/allocator.md | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/docs/allocator.md b/docs/allocator.md deleted file mode 100644 index 5885d76..0000000 --- a/docs/allocator.md +++ /dev/null @@ -1,65 +0,0 @@ -# Allocator - ---- - -KPL uses `mmap` to allocate slabs of non-executable and executable memory - -Once memory is used it is not returned to the OS until KPL exits - -## Non-Executable - -### Mapping - -Two linked list of pages is kept, tracing the size of map and how much is used: - -#### Small Page Allocator - -For allocations less then a page size `< 2 ^ 12` - -#### Large Page Allocator - -For allocations a page size or larger `>= 2 ^ 12` - -### Object Sizes - -Every Object KPL allocates is sized to the next power of 2 - -Because each power of two requires its own ring buffer, minimum allocation size is `2 ^ 6` and max is `2 ^ 27` - -### Ring Buffer Sizes - -The total number of objects each ring buffer can store can by modified by MACRO'S at compile time - -The program will exit if more objects are allocated then it's corresponding ring buffer can hold - -### Ring Buffer Implementation - -Each ring buffer is implemented as an atomic multi-producer multi-consumer queue - -### Operation - -#### Constructor - -#### Requesting Objects - -#### Returning Objects - -#### Destructor - -## Executable - -### Mapping - -A linked list of pages is kept, tracing the size of each map and how much is used - -### Operation - -#### Constructor - -#### Requesting Memory - -#### Writing To Memory - -#### Making Memory Executable - -#### Destructor |
