From: MaartenBrock Date: Sun, 29 Oct 2006 19:47:53 +0000 (+0000) Subject: * device/include/malloc.h, X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=f10e9b9b2ad097b2b1d12d396c078f9e4964da63;p=fw%2Fsdcc * device/include/malloc.h, * device/lib/calloc.c, * device/lib/free.c, * device/lib/malloc.c, * device/lib/realloc.c: moved definition of struct into sources * support/regression/tests/malloc.c: use void* for init_dynamic_memory() git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4443 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 121a959b..6a811427 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-10-29 Maarten Brock + + * device/include/malloc.h, + * device/lib/calloc.c, + * device/lib/free.c, + * device/lib/malloc.c, + * device/lib/realloc.c: moved definition of struct into sources + * support/regression/tests/malloc.c: use void* for init_dynamic_memory() + 2006-10-29 Maarten Brock * as/asx8051.dsp: corrected output directories diff --git a/device/include/malloc.h b/device/include/malloc.h index 718d1447..9be8cec5 100644 --- a/device/include/malloc.h +++ b/device/include/malloc.h @@ -36,15 +36,6 @@ void free (void * ptr); #else -#define MEMHEADER struct MAH// Memory Allocation Header - -MEMHEADER -{ - MEMHEADER __xdata * next; - unsigned int len; - unsigned char mem[]; -}; - extern void init_dynamic_memory(void xdata * heap, unsigned int size); extern void xdata * calloc (size_t nmemb, size_t size); extern void xdata * malloc (size_t size); diff --git a/device/lib/calloc.c b/device/lib/calloc.c index fa99ac49..343b4f62 100644 --- a/device/lib/calloc.c +++ b/device/lib/calloc.c @@ -46,6 +46,15 @@ struct _MEMHEADER #else +#define MEMHEADER struct MAH// Memory Allocation Header + +MEMHEADER +{ + MEMHEADER __xdata * next; + unsigned int len; + unsigned char mem[]; +}; + #define HEADER_SIZE sizeof(MEMHEADER) #endif diff --git a/device/lib/free.c b/device/lib/free.c index 9634434c..b592e4d6 100644 --- a/device/lib/free.c +++ b/device/lib/free.c @@ -101,6 +101,15 @@ free (void *p) // xdata - variable in external memory (just RAM) //-------------------------------------------------------------------- + #define MEMHEADER struct MAH// Memory Allocation Header + + MEMHEADER + { + MEMHEADER __xdata * next; + unsigned int len; + unsigned char mem[]; + }; + #define HEADER_SIZE sizeof(MEMHEADER) //Static here means: can be accessed from this module only diff --git a/device/lib/malloc.c b/device/lib/malloc.c index c1e5a44d..8c8d5c7f 100644 --- a/device/lib/malloc.c +++ b/device/lib/malloc.c @@ -139,6 +139,15 @@ malloc (unsigned int size) // xdata - variable in external memory (just RAM) //-------------------------------------------------------------------- + #define MEMHEADER struct MAH// Memory Allocation Header + + MEMHEADER + { + MEMHEADER __xdata * next; + unsigned int len; + unsigned char mem[]; + }; + #define HEADER_SIZE sizeof(MEMHEADER) MEMHEADER xdata * _sdcc_first_memheader; @@ -168,8 +177,8 @@ malloc (unsigned int size) if ( !array ) //Reserved memory starts at 0x0000 but that's NULL... { //So, we lost one byte! - array++; - size--; + array++; + size--; } _sdcc_first_memheader = (MEMHEADER xdata * ) array; //Reserve a mem for last header @@ -217,7 +226,7 @@ malloc (unsigned int size) { if (!current_header->len) { //This code works only for first_header in the list and only - current_header->len = size; //for first allocation + current_header->len = size; //for first allocation } else { //else create new header at the begin of spare diff --git a/device/lib/realloc.c b/device/lib/realloc.c index 0702e3b7..4fad06e9 100644 --- a/device/lib/realloc.c +++ b/device/lib/realloc.c @@ -53,6 +53,15 @@ struct _MEMHEADER #else +#define MEMHEADER struct MAH// Memory Allocation Header + +MEMHEADER +{ + MEMHEADER __xdata * next; + unsigned int len; + unsigned char mem[]; +}; + #define HEADER_SIZE sizeof(MEMHEADER) #define MEM(x) (x->mem) diff --git a/support/regression/tests/malloc.c b/support/regression/tests/malloc.c index 319de73b..593f8c5e 100644 --- a/support/regression/tests/malloc.c +++ b/support/regression/tests/malloc.c @@ -19,7 +19,7 @@ testMalloc(void) #if defined(SDCC_pic16) _initHeap(heap, sizeof heap); #else - init_dynamic_memory((MEMHEADER xdata *)heap, sizeof(heap)); + init_dynamic_memory(heap, sizeof(heap)); #endif p1 = malloc(200);