Difference between revisions of "How to use SystemView Heap Monitoring - Custom Heap"

From SEGGER Wiki
Jump to: navigation, search
Line 1: Line 1:
 
This article assumes a working SystemView setup. To gain some more info on this subject, please consult either the main article ([[How to use SystemView Heap_Monitoring]]) or the SystemView documentation.
 
This article assumes a working SystemView setup. To gain some more info on this subject, please consult either the main article ([[How to use SystemView Heap_Monitoring]]) or the SystemView documentation.
  +
<code>
  +
static void* _MyMalloc(size_t size) {
  +
void* p = malloc(size);
  +
// SystemView needs the real internal heap block size, not the amount requested by the user,
  +
// hence the call to a helper function _GetAllocBlockSize for the currently selected heap type ('Basic')
  +
SEGGER_SYSVIEW_HeapAlloc(__heap_start__, p, _GetAllocBlockSize(size));
  +
return p;
  +
}
  +
  +
/*********************************************************************
  +
*
  +
* _MyRealloc
  +
*
  +
* Function description
  +
* Calls the stdlib realloc function and dispatches the SystemView HeapFree and HeapAlloc event.
  +
*
  +
* Parameters
  +
* p : Pointer to the memory to be reallocated
  +
* size : Size of the reallocated memory block
  +
*
  +
* Return value
  +
* Pointer to the allocated memory
  +
*
  +
*/
  +
static void* _MyRealloc(void* p, size_t size) {
  +
void* rp = realloc(p, size);
  +
SEGGER_SYSVIEW_HeapFree(__heap_start__, p);
  +
// SystemView needs the real internal heap block size, not the amount requested by the user,
  +
// hence the call to a helper function _GetAllocBlockSize for the currently selected heap type ('Basic')
  +
SEGGER_SYSVIEW_HeapAlloc(__heap_start__, rp, _GetAllocBlockSize(size));
  +
return rp;
  +
}
  +
  +
/*********************************************************************
  +
*
  +
* _MyFree
  +
*
  +
* Function description
  +
* Calls the stdlib free function and dispatches the SystemView HeapFree event.
  +
*
  +
* Parameters
  +
* p : Pointer to be released
  +
*
  +
* Return value
  +
* none
  +
*
  +
*/
  +
static void _MyFree(void* p) {
  +
free(p);
  +
SEGGER_SYSVIEW_HeapFree(__heap_start__, p);
  +
}
  +
  +
</code

Revision as of 15:30, 18 July 2023

This article assumes a working SystemView setup. To gain some more info on this subject, please consult either the main article (How to use SystemView Heap_Monitoring) or the SystemView documentation. static void* _MyMalloc(size_t size) {

 void* p = malloc(size);
 // SystemView needs the real internal heap block size, not the amount requested by the user,
 // hence the call to a helper function _GetAllocBlockSize for the currently selected heap type ('Basic')
 SEGGER_SYSVIEW_HeapAlloc(__heap_start__, p, _GetAllocBlockSize(size));
 return p;

}

/*********************************************************************

  • _MyRealloc
  • Function description
  • Calls the stdlib realloc function and dispatches the SystemView HeapFree and HeapAlloc event.
  • Parameters
  • p  : Pointer to the memory to be reallocated
  • size : Size of the reallocated memory block
  • Return value
  • Pointer to the allocated memory
  • /

static void* _MyRealloc(void* p, size_t size) {

 void* rp = realloc(p, size);
 SEGGER_SYSVIEW_HeapFree(__heap_start__, p);
 // SystemView needs the real internal heap block size, not the amount requested by the user,
 // hence the call to a helper function _GetAllocBlockSize for the currently selected heap type ('Basic')
 SEGGER_SYSVIEW_HeapAlloc(__heap_start__, rp, _GetAllocBlockSize(size));
 return rp;

}

/*********************************************************************

  • _MyFree
  • Function description
  • Calls the stdlib free function and dispatches the SystemView HeapFree event.
  • Parameters
  • p : Pointer to be released
  • Return value
  • none
  • /

static void _MyFree(void* p) {

 free(p);
 SEGGER_SYSVIEW_HeapFree(__heap_start__, p);

}

</code