Added updated heap stats

This commit is contained in:
dario 2024-01-18 13:25:00 +01:00
parent 712797ae1c
commit 1553465d2f
4 changed files with 83 additions and 16 deletions

View File

@ -9,16 +9,51 @@
#define RTOS_DEBUG_HEAP_STATS_HPP
#include <sta/config.hpp>
#ifdef STA_DEBUGGING_ENABLED
#include <sta/debug/debug.hpp>
namespace sta
{
namespace rtos
{
/**
* @brief Get the free memory on the heap.
*
* @return size_t The number of free bytes on the heap.
*/
size_t getAvailableHeapSpace();
/**
* @brief Get the total number of allocs during the program's
* runtime.
*
* @return size_t The number of allocs.
*/
size_t getNumAllocs();
/**
* @brief Get the total number of frees during the program's
* runtime.
*
* @return size_t The number of frees.
*/
size_t getNumFrees();
/**
* @brief Print the current heap stats
*
*/
void printHeapStats();
} // namespace rtos
} // namespace sta
/**
* @brief Print the current heap stats.
*/
# define STA_DEBUG_HEAP_STATS() printHeapStats()
# define STA_DEBUG_HEAP_STATS() sta::rtos::printHeapStats()
#else

View File

@ -137,7 +137,7 @@ namespace sta
/**
* @brief Forcibly terminate thread.
*/
void terminate();
void kill();
/**
* @brief Send system notification flags to thread.

View File

@ -12,6 +12,35 @@
#include <FreeRTOS.h>
#include <cmsis_os2.h>
namespace sta
{
namespace rtos
{
size_t getAvailableHeapSpace()
{
xHeapStats stats;
vPortGetHeapStats(&stats);
return stats.xAvailableHeapSpaceInBytes;
}
size_t getNumAllocs()
{
xHeapStats stats;
vPortGetHeapStats(&stats);
return stats.xNumberOfSuccessfulAllocations;
}
size_t getNumFrees()
{
xHeapStats stats;
vPortGetHeapStats(&stats);
return stats.xNumberOfSuccessfulFrees;
}
void printHeapStats()
{
xHeapStats stats;
@ -25,7 +54,10 @@ void printHeapStats()
stats.xNumberOfSuccessfulFrees
);
}
} // namespace rtos
} // namespace sta
#endif // STA_DEBUGGING_ENABLED

View File

@ -78,7 +78,7 @@ namespace sta
return terminate_;
}
void RtosThread::terminate()
void RtosThread::kill()
{
STA_ASSERT(handle_.get() != nullptr);
osThreadTerminate(handle_.get());