diff options
author | Joel Bodenmann <joel@seriouslyembedded.com> | 2015-11-27 20:39:28 +0100 |
---|---|---|
committer | Joel Bodenmann <joel@seriouslyembedded.com> | 2015-11-27 20:39:28 +0100 |
commit | 5a99092b794373966e444296c57991631e712c70 (patch) | |
tree | 3e2853ab9730ece7398f508238ac2707e485b346 /src/gos/gos_x_heap.h | |
parent | eaf0b19fb8428b9e2e47798294d6ba83a56d186e (diff) | |
parent | f16ee702727a811288749a0722ddb138dd559fa8 (diff) | |
download | uGFX-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.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 |