Skip to content

Commit

Permalink
adding the missing freemem code
Browse files Browse the repository at this point in the history
  • Loading branch information
interactive-matter committed Feb 18, 2011
1 parent 437aa8a commit 4cb8c01
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions Examples/test/test.pde
Expand Up @@ -215,4 +215,52 @@ void printProgStr(const prog_char* str) {
}
}

//Code to print out the free memory

struct __freelist {
size_t sz;
struct __freelist *nx;
};

extern char * const __brkval;
extern struct __freelist *__flp;

uint16_t freeMem(uint16_t *biggest)
{
char *brkval;
char *cp;
unsigned freeSpace;
struct __freelist *fp1, *fp2;

brkval = __brkval;
if (brkval == 0) {
brkval = __malloc_heap_start;
}
cp = __malloc_heap_end;
if (cp == 0) {
cp = ((char *)AVR_STACK_POINTER_REG) - __malloc_margin;
}
if (cp <= brkval) return 0;

freeSpace = cp - brkval;

for (*biggest = 0, fp1 = __flp, fp2 = 0;
fp1;
fp2 = fp1, fp1 = fp1->nx) {
if (fp1->sz > *biggest) *biggest = fp1->sz;
freeSpace += fp1->sz;
}

return freeSpace;
}

uint16_t biggest;

void freeMem(char* message) {
Serial.print(message);
Serial.print(":\t");
Serial.println(freeMem(&biggest));
}



0 comments on commit 4cb8c01

Please sign in to comment.