mem.c File Reference


Data Structures

struct  mem_helper
struct  mem

Functions

void * mem_malloc (mem_size_t size)
void mem_free (void *rmem)
void mem_init (void)
void * mem_realloc (void *rmem, mem_size_t newsize)
void * mem_calloc (mem_size_t count, mem_size_t size)

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


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

void mem_free ( void *  rmem  ) 

Free memory previously allocated by mem_malloc. 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
Put a struct mem back on the heap

Parameters:
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  ) 

Allocate memory: determine the smallest pool that is big enough to contain an element of 'size' and get an element from that pool.

Parameters:
size the size in bytes of the memory needed
Returns:
a pointer to the allocated memory or NULL if the pool is empty
Adam's mem_malloc() plus solution for bug #17922 Allocate a block of memory with a minimum of 'size' bytes.

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).

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


Generated on Sun Mar 23 19:22:46 2008 for lwIP 1.3.0 by  doxygen 1.5.4