test_freertos_mutex.c 629 B

1234567891011121314151617181920
  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. static void mutex_release_task(void* arg)
  7. {
  8. SemaphoreHandle_t mutex = (SemaphoreHandle_t) arg;
  9. xSemaphoreGive(mutex);
  10. TEST_FAIL_MESSAGE("should not be reached");
  11. }
  12. TEST_CASE("mutex released not by owner causes an assert", "[freertos][reset=abort,SW_CPU_RESET]")
  13. {
  14. SemaphoreHandle_t mutex = xSemaphoreCreateMutex();
  15. xSemaphoreTake(mutex, portMAX_DELAY);
  16. xTaskCreate(&mutex_release_task, "mutex_release", 2048, mutex, UNITY_FREERTOS_PRIORITY + 1, NULL);
  17. vTaskDelay(1);
  18. }