/ components / freertos / test / test_freertos_mutex.c
test_freertos_mutex.c
 1  #include "freertos/FreeRTOS.h"
 2  #include "freertos/task.h"
 3  #include "freertos/semphr.h"
 4  #include "unity.h"
 5  #include "test_utils.h"
 6  
 7  /* If assertions aren't set to fail this code still crashes, but not with an abort... */
 8  #if CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER && CONFIG_FREERTOS_ASSERT_FAIL_ABORT
 9  
10  static void mutex_release_task(void* arg)
11  {
12      SemaphoreHandle_t mutex = (SemaphoreHandle_t) arg;
13      xSemaphoreGive(mutex);
14      TEST_FAIL_MESSAGE("should not be reached");
15  }
16  
17  TEST_CASE("mutex released not by owner causes an assert", "[freertos][reset=abort,SW_CPU_RESET]")
18  {
19      SemaphoreHandle_t mutex = xSemaphoreCreateMutex();
20      xSemaphoreTake(mutex, portMAX_DELAY);
21      xTaskCreate(&mutex_release_task, "mutex_release", 2048, mutex, UNITY_FREERTOS_PRIORITY + 1, NULL);
22      vTaskDelay(1);
23  }
24  
25  #endif