Barrelfish
|
Macros | |
#define | MIN_SIZE 12 |
Functions | |
u8_t * | mem_barrelfish_alloc (uint8_t buf_index, uint32_t size) |
void | mem_init (void) |
void | mem_free (void *rmem) |
void * | mem_realloc (void *rmem, mem_size_t newsize) |
void * | mem_malloc (mem_size_t size) |
void * | mem_calloc (mem_size_t count, mem_size_t size) |
Dynamic memory manager
This is a lightweight replacement for the standard C library malloc().
If you want to use the standard C library malloc() instead, define MEM_LIBC_MALLOC to 1 in your lwipopts.h
To let mem_malloc() use pools (prevents fragmentation and is much faster than a heap but might waste some memory), define MEM_USE_POOLS to 1, define MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list of pools like this (more pools can be added between _START and _END):
Define three pools with sizes 256, 512, and 1512 bytes LWIP_MALLOC_MEMPOOL_START LWIP_MALLOC_MEMPOOL(20, 256) LWIP_MALLOC_MEMPOOL(10, 512) LWIP_MALLOC_MEMPOOL(5, 1512) LWIP_MALLOC_MEMPOOL_END
#define MIN_SIZE 12 |
All allocated blocks will be MIN_SIZE bytes big, at least! MIN_SIZE can be overridden to suit your needs. Smaller values save space, larger values could prevent too small blocks to fragment the RAM too much.
u8_t* mem_barrelfish_alloc | ( | uint8_t | binding_index, |
uint32_t | size | ||
) |
the heap. we need one struct mem at the end and some room for alignment
Used to allocate memory for RX/TX buffers in lwip. At the moment it must * only be called once for each binding (2 total).
void* mem_calloc | ( | mem_size_t | count, |
mem_size_t | size | ||
) |
Contiguously allocates enough space for count objects that are size bytes of memory each and returns a pointer to the allocated memory.
The allocated memory is filled with bytes of value zero.
count | number of objects to allocate |
size | size of the objects to allocate |
void mem_free | ( | void * | rmem | ) |
Put a struct mem back on the heap
rmem | is the data portion of a struct mem as returned by a previous call to mem_malloc() |
void mem_init | ( | void | ) |
Zero the heap and initialize start, end and lowest-free
void* mem_malloc | ( | mem_size_t | size | ) |
Adam's mem_malloc() plus solution for bug #17922 Allocate a block of memory with a minimum of 'size' bytes.
size | is the minimum size of the requested block in bytes. |
Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT).
void* mem_realloc | ( | void * | rmem, |
mem_size_t | newsize | ||
) |
In contrast to its name, mem_realloc can only shrink memory, not expand it. Since the only use (for now) is in pbuf_realloc (which also can only shrink), this shouldn't be a problem!
rmem | pointer to memory allocated by mem_malloc the is to be shrinked |
newsize | required size after shrinking (needs to be smaller than or equal to the previous size) |