mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
ad39eaaeb0
FreeRTOS synchronization primitives (e.g., queues, eventgroups) use various event lists (i.e., task lists) to track what tasks are blocked on a current primitive. Usually these event lists are accessed via one of the event lists functions (such as vTask[PlaceOn|RemoveFrom]UnorderedEventList()), which in turn ensure that the global task list spinlock (xTaskQueueMutex) is taken when accessing these lists. However, some functions in event_groups.c manually traverse their event lists. Thus if a tick interrupt occurs on another core during traversal and that tick interrupt unblocks a task on the event list being traversed, the event list will be corrupted. This commit modifies the following event_groups.c functions so that they take the global task list lock before traversing their event list. - xEventGroupSetBits() - vEventGroupDelete() |
||
---|---|---|
.. | ||
include/freertos | ||
port | ||
test | ||
CMakeLists.txt | ||
component.mk | ||
croutine.c | ||
event_groups.c | ||
freertos_v8_compat.c | ||
FreeRTOS-openocd.c | ||
History.txt | ||
Kconfig | ||
license.txt | ||
linker.lf | ||
list.c | ||
queue.c | ||
sdkconfig.rename | ||
stream_buffer.c | ||
tasks.c | ||
timers.c |