esp-idf/components/freertos
Darian Leung ad39eaaeb0 freertos: Fix event group task list race condition
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()
2022-07-25 03:01:16 +00:00
..
include/freertos freertos: Fix event group task list race condition 2022-07-25 03:01:16 +00:00
port Merge branch 'bugfix/xtensa_sol_frame_saves_extra_registers_v4.3' into 'release/v4.3' 2022-07-10 15:45:16 +08:00
test freertos: Fix SMP round robin scheduling 2021-12-27 11:52:11 +08:00
CMakeLists.txt apptrace: Refactors apptrace for better support various tracing HW 2022-05-13 08:45:31 +00:00
component.mk freertos: Add RISC-V port 2020-11-13 07:49:11 +11:00
croutine.c Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00
event_groups.c freertos: Fix event group task list race condition 2022-07-25 03:01:16 +00:00
freertos_v8_compat.c freertos: add xQueueGenericReceive for backward compatibility 2020-11-27 19:08:42 +05:30
FreeRTOS-openocd.c freertos: fix defining uxTopUsedPriority for esp32s2beta 2019-10-29 16:38:48 +01:00
History.txt Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00
Kconfig freertos: Use the standard assert() function for configASSERT 2021-04-02 11:07:23 +11:00
license.txt Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00
linker.lf freertos: linker.lf rules fixes 2021-12-21 01:26:44 +00:00
list.c Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00
queue.c freertos: Check for arithmetic overflows on queue creation 2021-05-04 18:30:49 +10:00
sdkconfig.rename freertos: always enable static allocation 2020-12-29 16:18:04 +01:00
stream_buffer.c FreeRTOS: Fix xStreamBufferReset function always crashing 2021-12-23 06:15:50 +00:00
tasks.c freertos: Fix event group task list race condition 2022-07-25 03:01:16 +00:00
timers.c Whitespace: Automated whitespace fixes (large commit) 2020-11-11 07:36:35 +00:00