diff --git a/include/sta/rtos/debug/heap_stats.hpp b/include/sta/rtos/debug/heap_stats.hpp index fe1cbd5..210aed9 100644 --- a/include/sta/rtos/debug/heap_stats.hpp +++ b/include/sta/rtos/debug/heap_stats.hpp @@ -9,16 +9,51 @@ #define RTOS_DEBUG_HEAP_STATS_HPP #include + + #ifdef STA_DEBUGGING_ENABLED #include -void printHeapStats(); +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 diff --git a/include/sta/rtos/thread.hpp b/include/sta/rtos/thread.hpp index 98af9ef..8c6d957 100644 --- a/include/sta/rtos/thread.hpp +++ b/include/sta/rtos/thread.hpp @@ -137,7 +137,7 @@ namespace sta /** * @brief Forcibly terminate thread. */ - void terminate(); + void kill(); /** * @brief Send system notification flags to thread. diff --git a/src/debug/heap_stats.cpp b/src/debug/heap_stats.cpp index f46fa1a..7f9cf4a 100644 --- a/src/debug/heap_stats.cpp +++ b/src/debug/heap_stats.cpp @@ -12,20 +12,52 @@ #include #include -void printHeapStats() -{ - xHeapStats stats; - vPortGetHeapStats(&stats); - STA_DEBUG_PRINTF( - "[HEAP STATS] \n Available: %d\n Lowest: %d\n Mallocs: %d\n Frees: %d", - stats.xAvailableHeapSpaceInBytes, - stats.xMinimumEverFreeBytesRemaining, - stats.xNumberOfSuccessfulAllocations, - stats.xNumberOfSuccessfulFrees - ); -} +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; + vPortGetHeapStats(&stats); + + STA_DEBUG_PRINTF( + "[HEAP STATS] \n Available: %d\n Lowest: %d\n Mallocs: %d\n Frees: %d", + stats.xAvailableHeapSpaceInBytes, + stats.xMinimumEverFreeBytesRemaining, + stats.xNumberOfSuccessfulAllocations, + stats.xNumberOfSuccessfulFrees + ); + } + } // namespace rtos +} // namespace sta #endif // STA_DEBUGGING_ENABLED + diff --git a/src/thread.cpp b/src/thread.cpp index 1850d83..b8d7fa0 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -78,7 +78,7 @@ namespace sta return terminate_; } - void RtosThread::terminate() + void RtosThread::kill() { STA_ASSERT(handle_.get() != nullptr); osThreadTerminate(handle_.get());