aboutsummaryrefslogtreecommitdiffstats
path: root/src/gos/gos_x_heap.h
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@seriouslyembedded.com>2015-11-27 20:39:28 +0100
committerJoel Bodenmann <joel@seriouslyembedded.com>2015-11-27 20:39:28 +0100
commit5a99092b794373966e444296c57991631e712c70 (patch)
tree3e2853ab9730ece7398f508238ac2707e485b346 /src/gos/gos_x_heap.h
parenteaf0b19fb8428b9e2e47798294d6ba83a56d186e (diff)
parentf16ee702727a811288749a0722ddb138dd559fa8 (diff)
downloaduGFX-5a99092b794373966e444296c57991631e712c70.tar.gz
uGFX-5a99092b794373966e444296c57991631e712c70.tar.bz2
uGFX-5a99092b794373966e444296c57991631e712c70.zip
Merge branch 'master' of https://bitbucket.org/Tectu/ugfx
Diffstat (limited to 'src/gos/gos_x_heap.h')
-rw-r--r--src/gos/gos_x_heap.h42
1 files changed, 12 insertions, 30 deletions
diff --git a/src/gos/gos_x_heap.h b/src/gos/gos_x_heap.h
index 3612989c..0fbfc905 100644
--- a/src/gos/gos_x_heap.h
+++ b/src/gos/gos_x_heap.h
@@ -5,38 +5,10 @@
* http://ugfx.org/license.html
*/
-/**
- * The raw32 GOS implementation supports any 32 bit processor with or without an
- * underlying operating system. It uses cooperative multi-tasking. Be careful
- * when writing device drivers not to disturb the assumptions this creates by performing
- * call-backs to uGFX code unless you define the INTERRUPTS_OFF() and INTERRUPTS_ON() macros.
- * It still requires some C runtime library support...
- * enough startup to initialise the stack, interrupts, static data etc and call main().
- * setjmp() and longjmp() - for threading
- * memcpy() - for heap and threading
- * malloc(), realloc and free() - if GFX_OS_HEAP_SIZE == 0
- *
- * You must also define the following routines in your own code so that timing functions will work...
- * systemticks_t gfxSystemTicks(void);
- * systemticks_t gfxMillisecondsToTicks(delaytime_t ms);
- */
#ifndef _GOS_X_HEAP_H
#define _GOS_X_HEAP_H
-#if GOS_NEED_X_HEAP
-
-
-/*===========================================================================*/
-/* Special Macros */
-/*===========================================================================*/
-
-/**
- * @brief Set the maximum size of the heap.
- * @note If set to 0 then the C runtime library malloc() and free() are used.
- */
-#ifndef GFX_OS_HEAP_SIZE
- #define GFX_OS_HEAP_SIZE 0
-#endif
+#if GOS_NEED_X_HEAP || defined(__DOXYGEN__)
/*===========================================================================*/
/* Type definitions */
@@ -46,7 +18,17 @@
extern "C" {
#endif
- #if GFX_OS_HEAP_SIZE != 0
+ #if GFX_OS_HEAP_SIZE != 0 || defined(__DOXYGEN__)
+ /**
+ * @brief Take a chunk of memory and add it to the available heap
+ * @note Memory added must obviously not already be on the heap.
+ * @note It is allowable to add multiple non-contiguous blocks of memory
+ * to the heap. If however it is contiguous with a previously added block
+ * it will get merged with the existing block in order to allow
+ * allocations that span the boundary.
+ * @pre GFX_OS_HEAP_SIZE != 0 and an operating system that uses the
+ * internal ugfx heap allocator rather than its own allocator.
+ */
void gfxAddHeapBlock(void *ptr, size_t sz);
#endif