From 8248aca2825c3650d0aeb43bb999b23fd2997804 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 13 Sep 2008 09:01:16 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@432 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- src/chmempools.c | 50 ++++++++------------------------------------------ src/include/mempools.h | 2 +- 2 files changed, 9 insertions(+), 43 deletions(-) (limited to 'src') diff --git a/src/chmempools.c b/src/chmempools.c index 04d97a1f4..52914b7c6 100644 --- a/src/chmempools.c +++ b/src/chmempools.c @@ -27,54 +27,36 @@ #ifdef CH_USE_MEMPOOLS /** - * Initializes a memory pool. + * Initializes an empty memory pool. * @param mp pointer to a \p MemoryPool structure * @param size the size of the objects contained in this memory pool - * @param allow_growth if \p TRUE then the memory pool can allocate - * more space from the heap when needed - * @note The parameter \p allow_growth is ignored if the \p CH_USE_HEAP - * configuration option is not enabled. */ -void chPoolInit(MemoryPool *mp, size_t size, bool_t allow_growth) { +void chPoolInit(MemoryPool *mp, size_t size) { chDbgAssert((mp != NULL) && (size >= sizeof(void *)), "chpools.c, chPoolFree()"); mp->mp_next = NULL; mp->mp_object_size = size; -#ifdef CH_USE_HEAP - mp->mp_grow = allow_growth; -#endif /* CH_USE_HEAP */ } /** * Allocates an object from a memory pool. * @param mp pointer to a \p MemoryPool structure - * @return the pointer to the allocated object or \p NULL if the memory is - * exhausted + * @return the pointer to the allocated object or \p NULL if pool is empty */ void *chPoolAlloc(MemoryPool *mp) { - void *p; + void *objp; chDbgAssert(mp != NULL, "chpools.c, chPoolAlloc()"); chSysLock(); - if (mp->mp_next == NULL) { -#ifdef CH_USE_HEAP - if (mp->mp_grow) { - - chSysUnlock(); - return chHeapAlloc(mp->mp_object_size); - } -#endif /* CH_USE_HEAP */ - return NULL; - } - p = mp->mp_next; - mp->mp_next = mp->mp_next->ph_next; + if ((objp = mp->mp_next) != NULL) + mp->mp_next = mp->mp_next->ph_next; chSysUnlock(); - return p; + return objp; } /** @@ -82,7 +64,7 @@ void *chPoolAlloc(MemoryPool *mp) { * @param mp pointer to a \p MemoryPool structure * @param objp the pointer to the object to be released or added * @note the object is assumed to be of the right size for the specified - * buffer. + * memory pool. */ void chPoolFree(MemoryPool *mp, void *objp) { struct pool_header *php = objp; @@ -98,22 +80,6 @@ void chPoolFree(MemoryPool *mp, void *objp) { chSysUnlock(); } -#ifdef CH_USE_HEAP -/** - * Releases all the objects contained into a pool. - * @param mp pointer to a \p MemoryPool structure - * @note It is assumed that all the object are allocated using the heap - * allocator, do not use this function if the pool contains other kind - * of objects, as example static areas. - */ -void chPoolRelease(MemoryPool *mp) { - void *p; - - while ((p = chPoolAlloc(mp)) != NULL) - chHeapFree(p); -} -#endif - #endif /* CH_USE_MEMPOOLS */ /** @} */ diff --git a/src/include/mempools.h b/src/include/mempools.h index 8311a757a..0037bf487 100644 --- a/src/include/mempools.h +++ b/src/include/mempools.h @@ -42,7 +42,7 @@ typedef struct { #ifdef __cplusplus extern "C" { #endif - void chPoolInit(MemoryPool *mp, size_t size, bool_t allow_growth); + void chPoolInit(MemoryPool *mp, size_t size); void *chPoolAlloc(MemoryPool *mp); void chPoolFree(MemoryPool *mp, void *objp); #ifdef CH_USE_HEAP -- cgit v1.2.3