memp: allow initialization of pool memory if not in standard section

This commit is contained in:
David Girault 2017-05-29 11:41:11 +02:00 committed by Dirk Ziegelmeier
parent 3aca7885a7
commit dc2bdc2a21
2 changed files with 17 additions and 0 deletions

View File

@ -239,6 +239,14 @@ memp_init_pool(const struct memp_desc *desc)
*desc->tab = NULL;
memp = (struct memp*)LWIP_MEM_ALIGN(desc->base);
#if MEMP_MEM_INIT
/* force memset on pool memory */
memset(memp, 0, (size_t)desc->num * (MEMP_SIZE + desc->size
#if MEMP_OVERFLOW_CHECK
+ MEMP_SANITY_REGION_AFTER_ALIGNED
#endif
));
#endif
/* create a linked list of memp elements */
for (i = 0; i < desc->num; ++i) {
memp->next = *desc->tab;

View File

@ -248,6 +248,15 @@
#define MEMP_MEM_MALLOC 0
#endif
/**
* MEMP_MEM_INIT==1: Force use of memset to initialize pool memory.
* Useful if pool are moved in uninitialized section of memory. This will ensure
* default values in pcbs struct are well initialized in all conditions.
*/
#if !defined MEMP_MEM_INIT || defined __DOXYGEN__
#define MEMP_MEM_INIT 0
#endif
/**
* MEM_ALIGNMENT: should be set to the alignment of the CPU
* 4 byte alignment -> \#define MEM_ALIGNMENT 4