mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
1625a3aae2
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() |
||
---|---|---|
.. | ||
atomic.h | ||
croutine.h | ||
deprecated_definitions.h | ||
event_groups.h | ||
FreeRTOS.h | ||
list.h | ||
message_buffer.h | ||
mpu_prototypes.h | ||
mpu_wrappers.h | ||
portable.h | ||
projdefs.h | ||
queue.h | ||
semphr.h | ||
stack_macros.h | ||
StackMacros.h | ||
stdint.readme | ||
stream_buffer.h | ||
task.h | ||
timers.h |