diff options
Diffstat (limited to 'os/kernel/src/chmempools.c')
-rw-r--r-- | os/kernel/src/chmempools.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/os/kernel/src/chmempools.c b/os/kernel/src/chmempools.c index 76ef39b58..97d619520 100644 --- a/os/kernel/src/chmempools.c +++ b/os/kernel/src/chmempools.c @@ -33,19 +33,19 @@ * @param[out] mp pointer to a @p MemoryPool structure
* @param[in] size the size of the objects contained in this memory pool,
* the minimum accepted size is the size of a pointer to void.
+ * @param[in] provider memory provider function for the memory pool or
+ * @p NULL if the pool is not allowed to grow automatically
*
* @note The size is internally aligned to be a multiple of the @p align_t
* type size.
*/
-void chPoolInit(MemoryPool *mp, size_t size) {
+void chPoolInit(MemoryPool *mp, size_t size, memgetfunc_t provider) {
chDbgCheck((mp != NULL) && (size >= sizeof(void *)), "chPoolInit");
mp->mp_next = NULL;
mp->mp_object_size = MEM_ALIGN_SIZE(size);
-#if CH_USE_MEMCORE
- mp->mp_usecore = FALSE;
-#endif
+ mp->mp_provider = provider;
}
/**
@@ -63,8 +63,8 @@ void *chPoolAllocI(MemoryPool *mp) { if ((objp = mp->mp_next) != NULL)
mp->mp_next = mp->mp_next->ph_next;
#if CH_USE_MEMCORE
- else if (mp->mp_usecore)
- objp = chCoreAllocI(mp->mp_object_size);
+ else if (mp->mp_provider != NULL)
+ objp = mp->mp_provider(mp->mp_object_size);
#endif
return objp;
}
|