From 5b6d9d87a37b4eb280046cca99bb1c5231d97b63 Mon Sep 17 00:00:00 2001 From: Mahavir Jain Date: Mon, 9 May 2022 15:47:13 +0530 Subject: [PATCH] freertos: add return value to API `vTaskGetSnapshot` `vTaskGetSnapshot` is being used in coredump module to collect diagnostic information. It is possible that input arguments are invalid and `assert` in this situation is not correct. This commit modifies API signature to return pdTRUE in case of success, and pdFALSE otherwise. Caller can verify return value and then take appropriate decision. --- components/freertos/esp_additions/task_snapshot.c | 10 ++++++---- .../include/esp_additions/freertos/task_snapshot.h | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/components/freertos/esp_additions/task_snapshot.c b/components/freertos/esp_additions/task_snapshot.c index 1244118b60..8c394126e9 100644 --- a/components/freertos/esp_additions/task_snapshot.c +++ b/components/freertos/esp_additions/task_snapshot.c @@ -116,13 +116,15 @@ return NULL; } - void vTaskGetSnapshot( TaskHandle_t pxTask, TaskSnapshot_t *pxTaskSnapshot ) - { - configASSERT( portVALID_TCB_MEM(pxTask) ); - configASSERT( pxTaskSnapshot != NULL ); + BaseType_t vTaskGetSnapshot( TaskHandle_t pxTask, TaskSnapshot_t *pxTaskSnapshot ) +{ + if (portVALID_TCB_MEM(pxTask) == false || pxTaskSnapshot == NULL) { + return pdFALSE; + } pxTaskSnapshot->pxTCB = (void*) pxTask; pxTaskSnapshot->pxTopOfStack = pxTCBGetTopOfStack((void*) pxTask); pxTaskSnapshot->pxEndOfStack = pxTCBGetEndOfStack((void*) pxTask); + return pdTRUE; } TaskHandle_t pxTaskGetNext( TaskHandle_t pxTask ) diff --git a/components/freertos/include/esp_additions/freertos/task_snapshot.h b/components/freertos/include/esp_additions/freertos/task_snapshot.h index 1ad04cce69..635a515025 100644 --- a/components/freertos/include/esp_additions/freertos/task_snapshot.h +++ b/components/freertos/include/esp_additions/freertos/task_snapshot.h @@ -80,8 +80,9 @@ TaskHandle_t pxTaskGetNext( TaskHandle_t pxTask ); * @note This function should not be used while FreeRTOS is running (as it doesn't acquire any locks). * @param pxTask task handle. * @param pxTaskSnapshot address of TaskSnapshot_t structure to fill. + * @return pdTRUE if operation was successful else pdFALSE */ -void vTaskGetSnapshot( TaskHandle_t pxTask, TaskSnapshot_t *pxTaskSnapshot ); +BaseType_t vTaskGetSnapshot( TaskHandle_t pxTask, TaskSnapshot_t *pxTaskSnapshot ); #ifdef __cplusplus }