libc: Only define some macros when they are not defined

This commit is contained in:
Espressif Systems
2017-05-15 15:28:55 +08:00
parent 082f420d20
commit d1326005a4

View File

@ -72,11 +72,13 @@ long atol(const char *s);
unsigned long os_random(void);
int os_get_random(unsigned char *buf, size_t len);
#ifndef os_printf
/* NOTE: don't use printf_opt in irq handler, for test */
#define os_printf(fmt, ...) do { \
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
printf(flash_str, ##__VA_ARGS__); \
} while(0)
#endif
/* Note: check_memleak_debug_enable is a weak function inside SDK.
* please copy following codes to user_main.c.
@ -90,43 +92,67 @@ bool ICACHE_FLASH_ATTR check_memleak_debug_enable(void)
#ifndef MEMLEAK_DEBUG
#define MEMLEAK_DEBUG_ENABLE 0
#ifndef os_free
#define os_free(s) free(s)
#endif
#ifndef os_malloc
#define os_malloc(s) malloc(s)
#define os_calloc(p, s) calloc(p, s);
#endif
#ifndef os_calloc
#define os_calloc(p, s) calloc(p, s)
#endif
#ifndef os_realloc
#define os_realloc(p, s) realloc(p, s)
#endif
#ifndef os_zalloc
#define os_zalloc(s) zalloc(s)
#endif
#else
#define MEMLEAK_DEBUG_ENABLE 1
#ifndef os_free
#define os_free(s) \
do{\
static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__; \
vPortFree(s, mem_debug_file, __LINE__);\
}while(0)
#endif
#ifndef os_malloc
#define os_malloc(s) \
({ \
static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__; \
pvPortMalloc(s, mem_debug_file, __LINE__); \
})
#endif
#ifndef os_calloc
#define os_calloc(p, s) \
({ \
static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__; \
pvPortCalloc(p, s, mem_debug_file, __LINE__); \
})
#endif
#ifndef os_realloc
#define os_realloc(p, s) \
({ \
static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__; \
pvPortRealloc(p, s, mem_debug_file, __LINE__); \
})
#endif
#ifndef os_zalloc
#define os_zalloc(s) \
({ \
static const char mem_debug_file[] ICACHE_RODATA_ATTR STORE_ATTR = __FILE__; \
pvPortZalloc(s, mem_debug_file, __LINE__); \
})
#endif
#endif