mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-21 10:26:06 +03:00
* Use newlib libc library This change adds libcmin.a, which is created from newlib libc by selectively removing some of the object files (mostly related to heap management). The list of files is available in tools/sdk/lib/make_libcmin.sh. Files which are not needed are commented out. This change adds support for various functions which were missing, like sscanf, strftime, etc. * Fix some of the time functions * Redirect stdout to serial * Implement __putc_r * Switch to custom newlib build Built from https://github.com/igrr/newlib-xtensa using: ./configure --with-newlib --enable-multilib --disable-newlib-io-c99-formats --enable-newlib-supplied-syscalls --enable-target-optspace --program-transform-name="s&^&xtensa-lx106-elf-&" --disable-option-checking --with-target-subdir=xtensa-lx106-elf --target=xtensa-lx106-elf --enable-newlib-nano-formatted-io --enable-newlib-reent-small --prefix=path-to-arduino-core/tools/sdk/libc CROSS_CFLAGS="-DMALLOC_PROVIDED -DSIGNAL_PROVIDED -DABORT_PROVIDED" make make install * Update tests
70 lines
1.4 KiB
C
70 lines
1.4 KiB
C
/* heap.c - overrides of SDK heap handling functions
|
|
* Copyright (c) 2016 Ivan Grokhotkov. All rights reserved.
|
|
* This file is distributed under MIT license.
|
|
*/
|
|
|
|
#include <stdlib.h>
|
|
#include "umm_malloc/umm_malloc.h"
|
|
#include <c_types.h>
|
|
#include <sys/reent.h>
|
|
|
|
void* _malloc_r(struct _reent* unused, size_t size)
|
|
{
|
|
return malloc(size);
|
|
}
|
|
|
|
void _free_r(struct _reent* unused, void* ptr)
|
|
{
|
|
return free(ptr);
|
|
}
|
|
|
|
void* _realloc_r(struct _reent* unused, void* ptr, size_t size)
|
|
{
|
|
return realloc(ptr, size);
|
|
}
|
|
|
|
void* _calloc_r(struct _reent* unused, size_t count, size_t size)
|
|
{
|
|
return calloc(count, size);
|
|
}
|
|
|
|
void* ICACHE_RAM_ATTR pvPortMalloc(size_t size, const char* file, int line)
|
|
{
|
|
return malloc(size);
|
|
}
|
|
|
|
void ICACHE_RAM_ATTR vPortFree(void *ptr, const char* file, int line)
|
|
{
|
|
free(ptr);
|
|
}
|
|
|
|
void* ICACHE_RAM_ATTR pvPortCalloc(size_t count, size_t size, const char* file, int line)
|
|
{
|
|
return calloc(count, size);
|
|
}
|
|
|
|
void* ICACHE_RAM_ATTR pvPortRealloc(void *ptr, size_t size, const char* file, int line)
|
|
{
|
|
return realloc(ptr, size);
|
|
}
|
|
|
|
void* ICACHE_RAM_ATTR pvPortZalloc(size_t size, const char* file, int line)
|
|
{
|
|
return calloc(1, size);
|
|
}
|
|
|
|
size_t xPortGetFreeHeapSize(void)
|
|
{
|
|
return umm_free_heap_size();
|
|
}
|
|
|
|
size_t ICACHE_RAM_ATTR xPortWantedSizeAlign(size_t size)
|
|
{
|
|
return (size + 3) & ~((size_t) 3);
|
|
}
|
|
|
|
void system_show_malloc(void)
|
|
{
|
|
umm_info(NULL, 1);
|
|
}
|