#include "lwip/opt.h"
Macros | |
#define | LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) |
Align a memory pointer to the alignment defined by MEM_ALIGNMENT so that ADDR % MEM_ALIGNMENT == 0. More... | |
#define | LWIP_MEM_ALIGN_BUFFER(size) (((size) + MEM_ALIGNMENT - 1)) |
Calculate safe memory size for an aligned buffer when using an unaligned type as storage. More... | |
#define | LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1)) |
Calculate memory size for an aligned buffer - returns the next highest multiple of MEM_ALIGNMENT (e.g. More... | |
#define | MEM_SIZE_F U16_F |
Typedefs | |
typedef u16_t | mem_size_t |
Functions | |
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. More... | |
void | mem_free (void *mem) |
Put a struct mem back on the heap. More... | |
void | mem_init (void) |
Zero the heap and initialize start, end and lowest-free. More... | |
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. More... | |
void * | mem_trim (void *mem, mem_size_t size) |
Shrink memory returned by mem_malloc(). More... | |
#define LWIP_MEM_ALIGN | ( | addr | ) | ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) |
Align a memory pointer to the alignment defined by MEM_ALIGNMENT so that ADDR % MEM_ALIGNMENT == 0.
Referenced by ip_frag(), mem_init(), memp_init(), and pbuf_alloc().
#define LWIP_MEM_ALIGN_BUFFER | ( | size | ) | (((size) + MEM_ALIGNMENT - 1)) |
Calculate safe memory size for an aligned buffer when using an unaligned type as storage.
This includes a safety-margin on (MEM_ALIGNMENT - 1) at the start (e.g. if buffer is u8_t[] and actual data will be u32_t*)
#define LWIP_MEM_ALIGN_SIZE | ( | size | ) | (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1)) |
Calculate memory size for an aligned buffer - returns the next highest multiple of MEM_ALIGNMENT (e.g.
LWIP_MEM_ALIGN_SIZE(3) and LWIP_MEM_ALIGN_SIZE(4) will both yield 4 for MEM_ALIGNMENT == 4).
Referenced by mem_malloc(), mem_trim(), pbuf_alloc(), pbuf_alloced_custom(), and tcp_pbuf_prealloc().
#define MEM_SIZE_F U16_F |
typedef u16_t mem_size_t |
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 |
References mem_malloc().
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() |
References LWIP_ASSERT, LWIP_DBG_LEVEL_SERIOUS, LWIP_DBG_LEVEL_SEVERE, LWIP_DBG_TRACE, LWIP_DEBUGF, LWIP_MEM_FREE_DECL_PROTECT, LWIP_MEM_FREE_PROTECT, LWIP_MEM_FREE_UNPROTECT, MEM_ALIGNMENT, MEM_DEBUG, MEM_STATS_DEC_USED, MEM_STATS_INC, mem::next, NULL, plug_holes(), SIZEOF_STRUCT_MEM, SYS_ARCH_DECL_PROTECT(), SYS_ARCH_PROTECT(), SYS_ARCH_UNPROTECT(), and mem::used.
Referenced by http_close_conn(), http_conn_err(), and pbuf_free().
Zero the heap and initialize start, end and lowest-free.
References ERR_OK, LWIP_ASSERT, LWIP_MEM_ALIGN, LWIP_RAM_HEAP_POINTER, MEM_ALIGNMENT, MEM_SIZE_ALIGNED, MEM_STATS_AVAIL, mem::next, mem::prev, ram, SIZEOF_STRUCT_MEM, sys_mutex_new, and mem::used.
Referenced by lwip_init().
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).
References lfree, LWIP_ASSERT, LWIP_DBG_LEVEL_SERIOUS, LWIP_DEBUGF, LWIP_MEM_ALIGN_SIZE, LWIP_MEM_ALLOC_DECL_PROTECT, LWIP_MEM_ALLOC_PROTECT, LWIP_MEM_ALLOC_UNPROTECT, MEM_ALIGNMENT, MEM_DEBUG, MEM_SIZE_ALIGNED, MEM_STATS_INC, MEM_STATS_INC_USED, MIN_SIZE_ALIGNED, mem::next, next, NULL, mem::prev, S16_F, SIZEOF_STRUCT_MEM, sys_mutex_lock, sys_mutex_unlock, and mem::used.
Referenced by http_accept(), mem_calloc(), and pbuf_alloc().
void* mem_trim | ( | void * | rmem, |
mem_size_t | newsize | ||
) |
Shrink memory returned by mem_malloc().
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) |
References LWIP_ASSERT, LWIP_DBG_LEVEL_SEVERE, LWIP_DEBUGF, LWIP_MEM_ALIGN_SIZE, LWIP_MEM_FREE_DECL_PROTECT, LWIP_MEM_FREE_PROTECT, LWIP_MEM_FREE_UNPROTECT, MEM_DEBUG, MEM_SIZE_ALIGNED, MEM_STATS_DEC_USED, MEM_STATS_INC, MIN_SIZE_ALIGNED, mem::next, next, NULL, mem::prev, ram, SIZEOF_STRUCT_MEM, SYS_ARCH_DECL_PROTECT(), SYS_ARCH_PROTECT(), SYS_ARCH_UNPROTECT(), and mem::used.
Referenced by pbuf_realloc().