* Copyright 1999, 2000, 2001, 2008 Bernie Innocenti <bernie@codewiz.org>
* -->
*
+ * \defgroup heap Embedded optimized memory allocator
+ * \ingroup core
+ * \{
+ *
* \brief Heap subsystem (public interface).
*
* \todo Heap memory could be defined as an array of MemChunk, and used
* in this form also within the implementation. This would probably remove
* memory alignment problems, and also some aliasing issues.
*
- * \version $Id$
* \author Bernie Innocenti <bernie@codewiz.org>
+ *
+ * $WIZ$ module_name = "heap"
+ * $WIZ$ module_configuration = "bertos/cfg/cfg_heap.h"
*/
#ifndef STRUCT_HEAP_H
* \param size Heap size in bytes.
*/
#define HEAP_DEFINE_BUF(name, size) \
- heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)];
+ heap_buf_t name[((size) + sizeof(heap_buf_t) - 1) / sizeof(heap_buf_t)]
/// Initialize \a heap within the buffer pointed by \a memory which is of \a size bytes
void heap_init(struct Heap* heap, void* memory, size_t size);
/// Free a chunk of memory of \a size bytes from the heap
void heap_freemem(struct Heap* heap, void *mem, size_t size);
+size_t heap_freeSpace(struct Heap *h);
#define HNEW(heap, type) \
(type*)heap_allocmem(heap, sizeof(type))
#if CONFIG_HEAP_MALLOC
+/**
+ * \name Compatibility interface with C standard library
+ * \{
+ */
void *heap_malloc(struct Heap* heap, size_t size);
void *heap_calloc(struct Heap* heap, size_t size);
void heap_free(struct Heap* heap, void * mem);
+/** \} */
#endif
+/** \} */ //defgroup heap
+
+int heap_testSetup(void);
+int heap_testRun(void);
+int heap_testTearDown(void);
+
#endif /* STRUCT_HEAP_H */