From 593fbe0b23fca993753e3be6039146b68e26497f Mon Sep 17 00:00:00 2001 From: Darian Leung Date: Thu, 2 Jun 2022 21:27:50 +0800 Subject: [PATCH] freertos: Disable scheduler suspension tests for SMP FreeRTOS The behavior of vTaskSuspendAll() has changed in SMP FreeRTOS. This commit disables scheduler suspension related unit tests for SMP FreeRTOS. The tests will be updated in IDF-5201 --- .../tasks/test_task_suspend_resume.c | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/components/freertos/test/integration/tasks/test_task_suspend_resume.c b/components/freertos/test/integration/tasks/test_task_suspend_resume.c index 2ad9397e3c..dfee45eedb 100644 --- a/components/freertos/test/integration/tasks/test_task_suspend_resume.c +++ b/components/freertos/test/integration/tasks/test_task_suspend_resume.c @@ -200,26 +200,22 @@ TEST_CASE("Resume task from ISR (other core)", "[freertos]") test_resume_task_from_isr(!UNITY_FREERTOS_CPU); } +#if !CONFIG_FREERTOS_SMP +/* +Scheduler suspension behavior has changed in SMP FreeRTOS, thus these test are disabled for SMP FreeRTOS. +See IDF-5201 +*/ + static volatile bool block; static bool suspend_both_cpus; static void IRAM_ATTR suspend_scheduler_while_block_set(void *arg) { -#ifdef CONFIG_FREERTOS_SMP - //Note: Scheduler suspension behavior changed in FreeRTOS SMP - vTaskPreemptionDisable(NULL); -#else vTaskSuspendAll(); -#endif // CONFIG_FREERTOS_SMP while (block) { }; esp_rom_delay_us(1); -#ifdef CONFIG_FREERTOS_SMP - //Note: Scheduler suspension behavior changed in FreeRTOS SMP - vTaskPreemptionEnable(NULL); -#else xTaskResumeAll(); -#endif // CONFIG_FREERTOS_SMP } static void IRAM_ATTR suspend_scheduler_on_both_cpus(void) @@ -229,23 +225,13 @@ static void IRAM_ATTR suspend_scheduler_on_both_cpus(void) TEST_ESP_OK(esp_ipc_call((xPortGetCoreID() == 0) ? 1 : 0, &suspend_scheduler_while_block_set, NULL)); } -#ifdef CONFIG_FREERTOS_SMP - //Note: Scheduler suspension behavior changed in FreeRTOS SMP - vTaskPreemptionDisable(NULL); -#else vTaskSuspendAll(); -#endif // CONFIG_FREERTOS_SMP } static void IRAM_ATTR resume_scheduler_on_both_cpus(void) { block = false; -#ifdef CONFIG_FREERTOS_SMP - //Note: Scheduler suspension behavior changed in FreeRTOS SMP - vTaskPreemptionEnable(NULL); -#else xTaskResumeAll(); -#endif // CONFIG_FREERTOS_SMP } static const int waiting_ms = 2000; @@ -405,3 +391,4 @@ TEST_CASE("Test suspend-resume CPU works with xTimer", "[freertos]") test_scheduler_suspend3(1); } #endif // CONFIG_FREERTOS_UNICORE +#endif // !CONFIG_FREERTOS_SMP