You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
908 B
C
37 lines
908 B
C
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
char * _sbrk(int incr);
|
|
|
|
void __malloc_lock() ;
|
|
void __malloc_unlock();
|
|
|
|
char __HeapBase, __HeapLimit; // make sure to define these symbols in linker command file
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
static int totalBytesProvidedBySBRK = 0;
|
|
/*
|
|
//! sbrk/_sbrk version supporting reentrant newlib (depends upon above symbols defined by linker control file).
|
|
char * sbrk(int incr) {
|
|
static char *currentHeapEnd = &__HeapBase;
|
|
char *previousHeapEnd = currentHeapEnd;
|
|
if (currentHeapEnd + incr > &__HeapLimit) {
|
|
return (char *)-1; // the malloc-family routine that called sbrk will return 0
|
|
}
|
|
currentHeapEnd += incr;
|
|
|
|
totalBytesProvidedBySBRK += incr;
|
|
|
|
return (char *) previousHeapEnd;
|
|
}
|
|
//! Synonym for sbrk.
|
|
char * _sbrk(int incr) { return sbrk(incr); };
|
|
*/
|
|
|
|
void __malloc_lock() { };
|
|
void __malloc_unlock() { }; |