diff options
Diffstat (limited to 'src/gos')
-rw-r--r-- | src/gos/gos_x_heap.h | 42 |
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 |