fix: CLI stack display (#6222)

This commit is contained in:
Raphael Coeffic
2025-05-08 18:19:28 +10:00
committed by GitHub
parent ba5a60bfc1
commit a651f2e297
4 changed files with 14 additions and 35 deletions
+12 -5
View File
@@ -861,14 +861,21 @@ int cliTrace(const char ** argv)
int cliStackInfo(const char ** argv)
{
cliSerialPrint("[MAIN] %d available / %d bytes", mainStackAvailable()*4, stackSize()*4);
cliSerialPrint("[MENUS] %d available / %d bytes", menusStack.available()*4, menusStack.size());
cliSerialPrint("[MIXER] %d available / %d bytes", mixerStack.available()*4, mixerStack.size());
cliSerialPrint("[MENUS] %d available / %d bytes",
task_get_stack_usage(&menusTaskId) * 4,
task_get_stack_size(&menusTaskId));
cliSerialPrint("[MIXER] %d available / %d bytes",
task_get_stack_usage(&mixerTaskId) * 4,
task_get_stack_size(&mixerTaskId));
#if defined(AUDIO)
cliSerialPrint("[AUDIO] %d available / %d bytes", audioStack.available()*4, audioStack.size());
cliSerialPrint("[AUDIO] %d available / %d bytes",
task_get_stack_usage(&audioTaskId) * 4,
task_get_stack_size(&audioTaskId));
#endif
#if defined(CLI)
cliSerialPrint("[CLI] %d available / %d bytes", cliStack.available()*4, cliStack.size());
cliSerialPrint("[CLI] %d available / %d bytes",
task_get_stack_usage(&cliTaskId),
task_get_stack_size(&cliTaskId));
#endif
return 0;
}
-2
View File
@@ -197,8 +197,6 @@ void menuStatisticsDebug(event_t event)
lcdDrawText(lcdLastRightPos+2, y+1, "[A]", SMLSIZE);
lcdDrawNumber(lcdLastRightPos, y, task_get_stack_usage(&audioTaskId), LEFT);
#endif
lcdDrawText(lcdLastRightPos+2, y+1, "[I]", SMLSIZE);
lcdDrawNumber(lcdLastRightPos, y, mainStackAvailable(), LEFT);
y += FH;
#if defined(DEBUG_LATENCY)
+2 -1
View File
@@ -38,7 +38,8 @@ void task_create(task_handle_t* h, task_func_t func, const char* name,
unsigned task_get_stack_usage(task_handle_t* h)
{
return uxTaskGetStackHighWaterMark(h->_rtos_handle);
return (h->_stack_size - uxTaskGetStackHighWaterMark(h->_rtos_handle)) *
sizeof(StackType_t);
}
unsigned task_get_stack_size(task_handle_t* h)
-27
View File
@@ -36,11 +36,6 @@ extern "C++" {
{
}
static inline uint32_t mainStackAvailable()
{
return 500;
}
#elif defined(FREE_RTOS)
#include <FreeRTOS/include/FreeRTOS.h>
@@ -51,28 +46,6 @@ extern "C++" {
vTaskStartScheduler();
}
static inline uint32_t getStackAvailable(void * address, uint32_t size)
{
uint32_t * array = (uint32_t *)address;
uint32_t i = 0;
while (i < size && array[i] == 0x55555555) {
i++;
}
return i;
}
extern int _estack;
extern int _main_stack_start;
static inline uint32_t stackSize()
{
return ((unsigned char *)&_estack - (unsigned char *)&_main_stack_start) / 4;
}
static inline uint32_t mainStackAvailable()
{
return getStackAvailable(&_main_stack_start, stackSize());
}
#endif // RTOS type
#ifdef __cplusplus