@@ -59,6 +59,8 @@ task.h is included from an application file. */
59
59
// require "-Wl,--wrap=malloc -Wl,--wrap=free" linker option
60
60
extern void * __real_malloc (size_t size );
61
61
extern void __real_free (void * ptr );
62
+ extern void * __real_realloc (void * ptr , size_t _size );
63
+ extern void * __real_calloc (size_t nmemb , size_t _size );
62
64
63
65
void * __wrap_malloc (size_t c )
64
66
{
@@ -70,6 +72,17 @@ void __wrap_free (void *ptr)
70
72
return (xTaskGetSchedulerState () == taskSCHEDULER_RUNNING ) ? vPortFree (ptr ) : __real_free (ptr );
71
73
}
72
74
75
+ void * __wrap_realloc (void * ptr , size_t c )
76
+ {
77
+ return (xTaskGetSchedulerState () == taskSCHEDULER_RUNNING ) ? pvPortRealloc (ptr , c ) : __real_realloc (ptr , c );
78
+ }
79
+
80
+ void * __wrap_calloc (size_t nmemb , size_t c )
81
+ {
82
+ return (xTaskGetSchedulerState () == taskSCHEDULER_RUNNING ) ? pvPortCalloc (nmemb , c ) : __real_calloc (nmemb , c );
83
+ }
84
+
85
+
73
86
void * pvPortMalloc ( size_t xWantedSize )
74
87
{
75
88
void * pvReturn ;
@@ -107,3 +120,53 @@ void vPortFree( void *pv )
107
120
( void ) xTaskResumeAll ();
108
121
}
109
122
}
123
+ /*-----------------------------------------------------------*/
124
+
125
+ void * pvPortRealloc ( void * ptr , size_t xWantedSize )
126
+ {
127
+ void * pvReturn ;
128
+
129
+ vTaskSuspendAll ();
130
+ {
131
+ pvReturn = __real_realloc ( ptr , xWantedSize );
132
+ traceMALLOC ( pvReturn , xWantedSize );
133
+ }
134
+ ( void ) xTaskResumeAll ();
135
+
136
+ #if ( configUSE_MALLOC_FAILED_HOOK == 1 )
137
+ {
138
+ if ( pvReturn == NULL )
139
+ {
140
+ extern void vApplicationMallocFailedHook ( void );
141
+ vApplicationMallocFailedHook ();
142
+ }
143
+ }
144
+ #endif
145
+
146
+ return pvReturn ;
147
+ }
148
+ /*-----------------------------------------------------------*/
149
+
150
+ void * pvPortCalloc ( size_t nmemb , size_t xWantedSize )
151
+ {
152
+ void * pvReturn ;
153
+
154
+ vTaskSuspendAll ();
155
+ {
156
+ pvReturn = __real_calloc ( nmemb , xWantedSize );
157
+ traceMALLOC ( pvReturn , xWantedSize );
158
+ }
159
+ ( void ) xTaskResumeAll ();
160
+
161
+ #if ( configUSE_MALLOC_FAILED_HOOK == 1 )
162
+ {
163
+ if ( pvReturn == NULL )
164
+ {
165
+ extern void vApplicationMallocFailedHook ( void );
166
+ vApplicationMallocFailedHook ();
167
+ }
168
+ }
169
+ #endif
170
+
171
+ return pvReturn ;
172
+ }
0 commit comments