Xin Zhang / azure-iot-c-sdk-f767zi

Dependents:   samplemqtt

Committer:
XinZhangMS
Date:
Thu Aug 23 06:52:14 2018 +0000
Revision:
0:f7f1f0d76dd6
azure-c-sdk for mbed os supporting NUCLEO_F767ZI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
XinZhangMS 0:f7f1f0d76dd6 1 // Copyright (c) Microsoft. All rights reserved.
XinZhangMS 0:f7f1f0d76dd6 2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
XinZhangMS 0:f7f1f0d76dd6 3
XinZhangMS 0:f7f1f0d76dd6 4 #ifndef GBALLOC_H
XinZhangMS 0:f7f1f0d76dd6 5 #define GBALLOC_H
XinZhangMS 0:f7f1f0d76dd6 6
XinZhangMS 0:f7f1f0d76dd6 7 #include "azure_c_shared_utility/umock_c_prod.h"
XinZhangMS 0:f7f1f0d76dd6 8
XinZhangMS 0:f7f1f0d76dd6 9 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 10 #include <cstddef>
XinZhangMS 0:f7f1f0d76dd6 11 #include <cstdlib>
XinZhangMS 0:f7f1f0d76dd6 12 extern "C"
XinZhangMS 0:f7f1f0d76dd6 13 {
XinZhangMS 0:f7f1f0d76dd6 14 #else
XinZhangMS 0:f7f1f0d76dd6 15 #include <stddef.h>
XinZhangMS 0:f7f1f0d76dd6 16 #include <stdlib.h>
XinZhangMS 0:f7f1f0d76dd6 17 #endif
XinZhangMS 0:f7f1f0d76dd6 18
XinZhangMS 0:f7f1f0d76dd6 19 // GB_USE_CUSTOM_HEAP disables the implementations in gballoc.c and
XinZhangMS 0:f7f1f0d76dd6 20 // requires that an external library implement the gballoc_malloc family
XinZhangMS 0:f7f1f0d76dd6 21 // declared here.
XinZhangMS 0:f7f1f0d76dd6 22 #if defined(GB_USE_CUSTOM_HEAP)
XinZhangMS 0:f7f1f0d76dd6 23 void* gballoc_malloc(size_t size);
XinZhangMS 0:f7f1f0d76dd6 24 void* gballoc_calloc(size_t nmemb, size_t size);
XinZhangMS 0:f7f1f0d76dd6 25 void* gballoc_realloc(void* ptr, size_t size);
XinZhangMS 0:f7f1f0d76dd6 26 void gballoc_free(void* ptr);
XinZhangMS 0:f7f1f0d76dd6 27
XinZhangMS 0:f7f1f0d76dd6 28 #define malloc gballoc_malloc
XinZhangMS 0:f7f1f0d76dd6 29 #define calloc gballoc_calloc
XinZhangMS 0:f7f1f0d76dd6 30 #define realloc gballoc_realloc
XinZhangMS 0:f7f1f0d76dd6 31 #define free gballoc_free
XinZhangMS 0:f7f1f0d76dd6 32
XinZhangMS 0:f7f1f0d76dd6 33 /* all translation units that need memory measurement need to have GB_MEASURE_MEMORY_FOR_THIS defined */
XinZhangMS 0:f7f1f0d76dd6 34 /* GB_DEBUG_ALLOC is the switch that turns the measurement on/off, so that it is not on always */
XinZhangMS 0:f7f1f0d76dd6 35 #elif defined(GB_DEBUG_ALLOC)
XinZhangMS 0:f7f1f0d76dd6 36
XinZhangMS 0:f7f1f0d76dd6 37 MOCKABLE_FUNCTION(, int, gballoc_init);
XinZhangMS 0:f7f1f0d76dd6 38 MOCKABLE_FUNCTION(, void, gballoc_deinit);
XinZhangMS 0:f7f1f0d76dd6 39 MOCKABLE_FUNCTION(, void*, gballoc_malloc, size_t, size);
XinZhangMS 0:f7f1f0d76dd6 40 MOCKABLE_FUNCTION(, void*, gballoc_calloc, size_t, nmemb, size_t, size);
XinZhangMS 0:f7f1f0d76dd6 41 MOCKABLE_FUNCTION(, void*, gballoc_realloc, void*, ptr, size_t, size);
XinZhangMS 0:f7f1f0d76dd6 42 MOCKABLE_FUNCTION(, void, gballoc_free, void*, ptr);
XinZhangMS 0:f7f1f0d76dd6 43
XinZhangMS 0:f7f1f0d76dd6 44 MOCKABLE_FUNCTION(, size_t, gballoc_getMaximumMemoryUsed);
XinZhangMS 0:f7f1f0d76dd6 45 MOCKABLE_FUNCTION(, size_t, gballoc_getCurrentMemoryUsed);
XinZhangMS 0:f7f1f0d76dd6 46 MOCKABLE_FUNCTION(, size_t, gballoc_getAllocationCount);
XinZhangMS 0:f7f1f0d76dd6 47 MOCKABLE_FUNCTION(, void, gballoc_resetMetrics);
XinZhangMS 0:f7f1f0d76dd6 48
XinZhangMS 0:f7f1f0d76dd6 49 /* if GB_MEASURE_MEMORY_FOR_THIS is defined then we want to redirect memory allocation functions to gballoc_xxx functions */
XinZhangMS 0:f7f1f0d76dd6 50 #ifdef GB_MEASURE_MEMORY_FOR_THIS
XinZhangMS 0:f7f1f0d76dd6 51 /* Unfortunately this is still needed here for things to still compile when using _CRTDBG_MAP_ALLOC.
XinZhangMS 0:f7f1f0d76dd6 52 That is because there is a rogue component (most likely CppUnitTest) including crtdbg. */
XinZhangMS 0:f7f1f0d76dd6 53 #if defined(_CRTDBG_MAP_ALLOC) && defined(_DEBUG)
XinZhangMS 0:f7f1f0d76dd6 54 #undef _malloc_dbg
XinZhangMS 0:f7f1f0d76dd6 55 #undef _calloc_dbg
XinZhangMS 0:f7f1f0d76dd6 56 #undef _realloc_dbg
XinZhangMS 0:f7f1f0d76dd6 57 #undef _free_dbg
XinZhangMS 0:f7f1f0d76dd6 58 #define _malloc_dbg(size, ...) gballoc_malloc(size)
XinZhangMS 0:f7f1f0d76dd6 59 #define _calloc_dbg(nmemb, size, ...) gballoc_calloc(nmemb, size)
XinZhangMS 0:f7f1f0d76dd6 60 #define _realloc_dbg(ptr, size, ...) gballoc_realloc(ptr, size)
XinZhangMS 0:f7f1f0d76dd6 61 #define _free_dbg(ptr, ...) gballoc_free(ptr)
XinZhangMS 0:f7f1f0d76dd6 62 #else
XinZhangMS 0:f7f1f0d76dd6 63 #define malloc gballoc_malloc
XinZhangMS 0:f7f1f0d76dd6 64 #define calloc gballoc_calloc
XinZhangMS 0:f7f1f0d76dd6 65 #define realloc gballoc_realloc
XinZhangMS 0:f7f1f0d76dd6 66 #define free gballoc_free
XinZhangMS 0:f7f1f0d76dd6 67 #endif
XinZhangMS 0:f7f1f0d76dd6 68 #endif
XinZhangMS 0:f7f1f0d76dd6 69
XinZhangMS 0:f7f1f0d76dd6 70 #else /* GB_DEBUG_ALLOC */
XinZhangMS 0:f7f1f0d76dd6 71
XinZhangMS 0:f7f1f0d76dd6 72 #define gballoc_init() 0
XinZhangMS 0:f7f1f0d76dd6 73 #define gballoc_deinit() ((void)0)
XinZhangMS 0:f7f1f0d76dd6 74
XinZhangMS 0:f7f1f0d76dd6 75 #define gballoc_getMaximumMemoryUsed() SIZE_MAX
XinZhangMS 0:f7f1f0d76dd6 76 #define gballoc_getCurrentMemoryUsed() SIZE_MAX
XinZhangMS 0:f7f1f0d76dd6 77 #define gballoc_getAllocationCount() SIZE_MAX
XinZhangMS 0:f7f1f0d76dd6 78 #define gballoc_resetMetrics() ((void)0)
XinZhangMS 0:f7f1f0d76dd6 79
XinZhangMS 0:f7f1f0d76dd6 80 #endif /* GB_DEBUG_ALLOC */
XinZhangMS 0:f7f1f0d76dd6 81
XinZhangMS 0:f7f1f0d76dd6 82 #ifdef __cplusplus
XinZhangMS 0:f7f1f0d76dd6 83 }
XinZhangMS 0:f7f1f0d76dd6 84 #endif
XinZhangMS 0:f7f1f0d76dd6 85
XinZhangMS 0:f7f1f0d76dd6 86 #endif /* GBALLOC_H */