« Back to documentation index 
    
memp.c File Reference 
Dynamic pool memory manager.  
More... 
Go to the source code of this file. 
static int  memp_sanity  (void)  Check that memp-lists don't form a circle.   static void  memp_overflow_check_element_overflow  (struct memp *p, u16_t memp_type)  Check if a memp element was victim of an overflow (e.g.   static void  memp_overflow_check_element_underflow  (struct memp *p, u16_t memp_type)  Check if a memp element was victim of an underflow (e.g.   static void  memp_overflow_check_all  (void)  Do an overflow check for all elements in every pool.   static void  memp_overflow_init  (void)  Initialize the restricted areas of all memp elements in every pool.   void  memp_init  (void)  Initialize this module.   void *  memp_malloc  (memp_t type) memp_malloc_fn(memp_t type  Get an element from a specific pool.   void  memp_free  (memp_t type, void *mem)  Put an element back into its pool.   static struct memp *memp_tab[MEMP_MAX]  MEM_POSITION   This array holds the first free element of each pool.   static const u16_t  memp_sizes  [MEMP_MAX]  This array holds the element sizes of each pool.   static const u16_t  memp_num  [MEMP_MAX]  This array holds the number of elements in each pool.   static const char *  memp_desc  [MEMP_MAX]  This array holds a textual description of each pool.   static u8_t *const  memp_bases  []  This array holds the base of each memory pool.   
Detailed Description 
Dynamic pool memory manager. 
lwIP has dedicated pools for many structures (netconn, protocol control blocks, packet buffers, ...). All these pools are managed here. 
Definition in file memp.c .
Function Documentation 
      
        
          void memp_free  
          ( 
          memp_t  
           type ,  
         
        
          void *  
           mem   
         
        
          ) 
           
      
 
Put an element back into its pool. 
Parameters: 
  
    type the pool where to put mem  mem the memp element to free  
   
Definition at line 434  of file memp.c .
 
 
Initialize this module. 
Carves out memp_memory into linked lists for each pool-type. 
Definition at line 337  of file memp.c .
 
 
      
        
          void* memp_malloc  
          ( 
          memp_t  
           type  ) 
           
      
 
Get an element from a specific pool. 
Parameters: 
  
    type the pool to get an element from 
   
the debug version has two more parameters: 
Parameters: 
  
    file file name calling this function  line number of line where this function is called 
   
Returns: a pointer to the allocated memory or a NULL pointer on error   
 
      
        
          memp_overflow_check_all  
          ( 
          void  
           ) 
           [static] 
      
 
Do an overflow check for all elements in every pool. 
See also: memp_overflow_check_element for a description of the check  Definition at line 280  of file memp.c .
 
 
      
        
          static void memp_overflow_check_element_overflow  
          ( 
          struct memp *  
           p ,  
         
        
          u16_t  
           memp_type   
         
        
          ) 
           [static] 
      
 
Check if a memp element was victim of an overflow (e.g. 
the restricted area after it has been altered)
Parameters: 
  
    p the memp element to check  memp_type the pool p comes from  
   
Definition at line 216  of file memp.c .
 
 
      
        
          static void memp_overflow_check_element_underflow  
          ( 
          struct memp *  
           p ,  
         
        
          u16_t  
           memp_type   
         
        
          ) 
           [static] 
      
 
Check if a memp element was victim of an underflow (e.g. 
the restricted area before it has been altered)
Parameters: 
  
    p the memp element to check  memp_type the pool p comes from  
   
Definition at line 249  of file memp.c .
 
 
      
        
          static void memp_overflow_init  
          ( 
          void  
           ) 
           [static] 
      
 
Initialize the restricted areas of all memp elements in every pool. 
Definition at line 307  of file memp.c .
 
 
      
        
          static int memp_sanity  
          ( 
          void  
           ) 
           [static] 
      
 
Check that memp-lists don't form a circle. 
Definition at line 182  of file memp.c .
 
 
Variable Documentation 
      
        
          u8_t memp_memory [MEM_ALIGNMENT - 1 #define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) )#include "lwip/memp_std.h"] MEM_POSITION [static] 
         
      
 
This array holds the first free element of each pool. 
This is the actual memory used by the pools (all pools in one big block).
Elements form a linked list.
Definition at line 117  of file memp.c .
 
 
Initial value:  { 
#define LWIP_MEMPOOL(name,num,size,desc) memp_memory_ ## name ## _base,    
#include "lwip/memp_std.h" 
} MEM_POSITION 
 This array holds the base of each memory pool. 
Definition at line 162  of file memp.c .
 
 
Initial value:  {
#define LWIP_MEMPOOL(name,num,size,desc)  (desc), 
#include "lwip/memp_std.h" 
}
 This array holds a textual description of each pool. 
Definition at line 144  of file memp.c .
 
 
Initial value:  {
#define LWIP_MEMPOOL(name,num,size,desc)  (num), 
#include "lwip/memp_std.h" 
}
 This array holds the number of elements in each pool. 
Definition at line 137  of file memp.c .
 
 
Initial value:  {
#define LWIP_MEMPOOL(name,num,size,desc)  LWIP_MEM_ALIGN_SIZE(size), 
#include "lwip/memp_std.h" 
}
 This array holds the element sizes of each pool. 
Definition at line 129  of file memp.c .