From 3ac08425f2f7130fa0c9c7e47d6a8cb626d6e9e9 Mon Sep 17 00:00:00 2001 From: WanqQixiang Date: Fri, 14 Apr 2023 14:36:42 +0800 Subject: [PATCH] openthread: Add check for lock acquire and release --- components/openthread/port/esp_openthread_lock.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/components/openthread/port/esp_openthread_lock.c b/components/openthread/port/esp_openthread_lock.c index 6994d62115..ba7c63d411 100644 --- a/components/openthread/port/esp_openthread_lock.c +++ b/components/openthread/port/esp_openthread_lock.c @@ -5,8 +5,11 @@ */ #include "esp_openthread_lock.h" +#include "esp_openthread_common_macro.h" +#include "esp_check.h" #include "esp_err.h" +#include "esp_log.h" #include "freertos/FreeRTOS.h" #include "freertos/semphr.h" @@ -15,6 +18,8 @@ static SemaphoreHandle_t s_openthread_mutex = NULL; bool esp_openthread_lock_acquire(TickType_t block_ticks) { + ESP_RETURN_ON_FALSE(s_openthread_mutex && s_openthread_task_mutex, false, OT_PLAT_LOG_TAG, + "Failed to acquire the lock because the mutex is not ready"); BaseType_t ret = xSemaphoreTakeRecursive(s_openthread_mutex, block_ticks) && xSemaphoreTakeRecursive(s_openthread_task_mutex, block_ticks); return (ret == pdTRUE); @@ -22,18 +27,24 @@ bool esp_openthread_lock_acquire(TickType_t block_ticks) void esp_openthread_lock_release(void) { + ESP_RETURN_ON_FALSE(s_openthread_mutex && s_openthread_task_mutex, , OT_PLAT_LOG_TAG, + "Failed to release the lock because the mutex is not ready"); xSemaphoreGiveRecursive(s_openthread_task_mutex); xSemaphoreGiveRecursive(s_openthread_mutex); } bool esp_openthread_task_switching_lock_acquire(TickType_t block_ticks) { + ESP_RETURN_ON_FALSE(s_openthread_task_mutex, false, OT_PLAT_LOG_TAG, + "Failed to acquire the lock because the mutex is not ready"); BaseType_t ret = xSemaphoreTakeRecursive(s_openthread_task_mutex, block_ticks); return (ret == pdTRUE); } void esp_openthread_task_switching_lock_release(void) { + ESP_RETURN_ON_FALSE(s_openthread_task_mutex, , OT_PLAT_LOG_TAG, + "Failed to release the lock because the mutex is not ready"); xSemaphoreGiveRecursive(s_openthread_task_mutex); }