StuBS
|
#include "utils/alloc.h"
#include "utils/alloc_buddy.h"
#include "utils/math.h"
#include "utils/string.h"
#include "machine/cache.h"
#include "debug/assert.h"
Functions | |
static void * | reserve (void *start, size_t size) |
Memory reservation function for allocator Will return memory from a statically allocated char array in bss. | |
void * | malloc (size_t size) |
Allocate a memory block The memory is not initialized. | |
void | free (void *ptr) |
Free an allocated memory block. | |
void * | realloc (void *ptr, size_t size) |
Change the size of an allocated memory block The contents will be unchanged in the range from the start of the region up to the minimum of the old and new sizes. If the new size is larger than the old size, the added memory will not be initialized. | |
void * | calloc (size_t nmemb, size_t size) |
Allocate memory for an array of elements The memory is set to zero. | |
Constants | |
cache_aligned bool | in_use = false |
Concurrent access is not allowed Use assertions to detect bugs. | |
static const size_t | ALLOC_LOG2 = 24 |
Reserved memory size as power of 2. | |
static const size_t | mem_size = 1 << ALLOC_LOG2 |
(Resulting) reserved memory size | |
static char | mem [mem_size] |
Reserved memory (will be statically allocated in bss) | |
static Allocator::Buddy< 4, ALLOC_LOG2, sizeof(size_t) *2, reserve > | allocator |
Instantiate a Buddy allocator using the custom reserve function. | |
|
static |
Memory reservation function for allocator Will return memory from a statically allocated char array in bss.
start | Start address for requested memory, if nullptr it will use the pointer to the char array instead |
size | Requested memory size |
void * malloc | ( | size_t | size | ) |
Allocate a memory block The memory is not initialized.
size | Requested size of memory in bytes. |
nullptr
on error (no memory available) or if size was zero. void free | ( | void * | ptr | ) |
Free an allocated memory block.
ptr | Pointer to an previously allocated memory block. |
void * realloc | ( | void * | ptr, |
size_t | size | ||
) |
Change the size of an allocated memory block The contents will be unchanged in the range from the start of the region up to the minimum of the old and new sizes. If the new size is larger than the old size, the added memory will not be initialized.
ptr | Pointer to an previously allocated memory block. If nullptr , then the call is equivalent to malloc(). |
size | New size of the memory block. If equal to zero, then the call is equivalent to free |
nullptr
on error Allocate memory for an array of elements The memory is set to zero.
nmemb | Number of elements |
size | Size of an element in bytes |
nullptr
if the request fails cache_aligned bool in_use = false |
Concurrent access is not allowed Use assertions to detect bugs.
|
static |
Reserved memory size as power of 2.
|
static |
(Resulting) reserved memory size
|
static |
Reserved memory (will be statically allocated in bss)
|
static |
Instantiate a Buddy allocator using the custom reserve function.