A version of LWIP, provided for backwards compatibility.
Dependents: AA_DemoBoard DemoBoard HelloServerDemo DemoBoard_RangeIndicator ... more
Dynamic memory manager. More...
Go to the source code of this file.
Functions | |
void * | mem_malloc (mem_size_t size) |
Allocate memory: determine the smallest pool that is big enough to contain an element of 'size' and get an element from that pool. | |
void | mem_free (void *rmem) |
Free memory previously allocated by mem_malloc. | |
static void | plug_holes (struct mem *mem) |
"Plug holes" by combining adjacent empty struct mems. | |
void | mem_init (void) |
Zero the heap and initialize start, end and lowest-free. | |
void * | mem_realloc (void *rmem, mem_size_t newsize) |
In contrast to its name, mem_realloc can only shrink memory, not expand it. | |
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. | |
Variables | |
static u8_t | ram_heap [MEM_SIZE_ALIGNED+(2 *SIZEOF_STRUCT_MEM)+MEM_ALIGNMENT] |
the heap. | |
static u8_t * | ram |
pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array | |
static struct mem * | ram_end |
the last entry, always unused! | |
static struct mem * | lfree |
pointer to the lowest free block, this is used for faster search | |
static sys_sem_t | mem_sem |
concurrent access protection |
Detailed Description
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
Definition in file tag/0.5/lwIP/core/mem.c.
Function Documentation
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.
- Parameters:
-
count number of objects to allocate size size of the objects to allocate
- Returns:
- pointer to allocated memory / NULL pointer if there is an error
Definition at line 564 of file tag/0.5/lwIP/core/mem.c.
void mem_free | ( | void * | rmem ) |
Free memory previously allocated by mem_malloc.
Put a struct mem back on the heap.
Loads the pool number and calls memp_free with that pool number to put the element back into its pool
- Parameters:
-
rmem the memory element to free rmem is the data portion of a struct mem as returned by a previous call to mem_malloc()
Definition at line 126 of file tag/0.5/lwIP/core/mem.c.
void mem_init | ( | void | ) |
Zero the heap and initialize start, end and lowest-free.
Definition at line 233 of file tag/0.5/lwIP/core/mem.c.
void* mem_malloc | ( | mem_size_t | size ) |
Allocate memory: determine the smallest pool that is big enough to contain an element of 'size' and get an element from that pool.
Adam's mem_malloc() plus solution for bug #17922 Allocate a block of memory with a minimum of 'size' bytes.
- Parameters:
-
size the size in bytes of the memory needed
- Returns:
- a pointer to the allocated memory or NULL if the pool is empty
- Parameters:
-
size is the minimum size of the requested block in bytes.
- Returns:
- pointer to allocated memory or NULL if no free memory was found.
Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT).
Definition at line 86 of file tag/0.5/lwIP/core/mem.c.
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!
- Parameters:
-
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)
- Returns:
- for compatibility reasons: is always == rmem, at the moment
Definition at line 326 of file tag/0.5/lwIP/core/mem.c.
static void plug_holes | ( | struct mem * | mem ) | [static] |
"Plug holes" by combining adjacent empty struct mems.
After this function is through, there should not exist one empty struct mem pointing to another empty struct mem.
- Parameters:
-
mem this points to a struct mem which just has been freed
Definition at line 195 of file tag/0.5/lwIP/core/mem.c.
Variable Documentation
struct mem* lfree [static] |
pointer to the lowest free block, this is used for faster search
Definition at line 179 of file tag/0.5/lwIP/core/mem.c.
sys_sem_t mem_sem [static] |
concurrent access protection
Definition at line 181 of file tag/0.5/lwIP/core/mem.c.
u8_t* ram [static] |
pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array
Definition at line 175 of file tag/0.5/lwIP/core/mem.c.
struct mem* ram_end [static] |
the last entry, always unused!
Definition at line 177 of file tag/0.5/lwIP/core/mem.c.
u8_t ram_heap[MEM_SIZE_ALIGNED+(2 *SIZEOF_STRUCT_MEM)+MEM_ALIGNMENT] [static] |
the heap.
we need one struct mem at the end and some room for alignment
Definition at line 173 of file tag/0.5/lwIP/core/mem.c.
Generated on Tue Jul 12 2022 16:06:29 by 1.7.2