freertos: When scheduler is disabled, tasks on other core should immediately resume

... if triggered by a SemaphoreGive/etc.

Previously they would resume after scheduler was resumed, on next
RTOS tick of other CPU.
This commit is contained in:
Angus Gratton
2017-09-28 11:46:53 +10:00
committed by Angus Gratton
parent f2f9170abc
commit 3e62c2e052
3 changed files with 24 additions and 16 deletions
-5
View File
@@ -227,11 +227,6 @@ protection against simultaneous access. Consider using critical sections
(disables interrupts) or semaphores (does not disable interrupts) instead when
protecting shared resources in ESP-IDF FreeRTOS.
If the task running on the CPU with scheduler suspended calls a function (like
``xSemaphoreGive``, ``xQueueSend``) that wakes another task, this task will not run
until after ``vTaskResumeAll()`` is called. This is true even if the woken task is
on the other CPU (where the scheduler is still running).
In general, it's better to use other RTOS primitives like mutex semaphores to protect
against data shared between tasks, rather than ``vTaskSuspendAll()``.