esp_ipc: fix race condition in ipc task

This commit is contained in:
Erhan Kurubas 2021-08-23 17:17:19 +03:00
parent 804a99790a
commit d6ed894113
8 changed files with 7 additions and 8 deletions

View File

@ -30,7 +30,6 @@ endif()
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "${include_dirs}"
PRIV_INCLUDE_DIRS "${priv_include_dirs}"
PRIV_REQUIRES soc esp_ipc
LDFRAGMENTS linker.lf)

@ -1 +1 @@
Subproject commit cfbb0571fb424ca4a68a0c172cbff1fdc79fd91b
Subproject commit fb49791b7c1a8a35f06e68124c90022667b4cff1

@ -1 +1 @@
Subproject commit 9ca8afd50afde57958a67fca65847edc52f7d91c
Subproject commit 7ad49c38b893952bbed155ede2c7684f0307f6d3

@ -1 +1 @@
Subproject commit 7c349dbb6b8d76db39383b226d3ebdf59b8ab37d
Subproject commit 085ca40781f7c39febe6d14fb7e5cba342e1804b

@ -1 +1 @@
Subproject commit 9b6451c3654bc1f625e36c87f018c2da34bea5e6
Subproject commit 98954eb30a2e728e172a6cd29430ae5bc999b585

View File

@ -75,7 +75,6 @@ static void IRAM_ATTR ipc_task(void* arg)
if (s_ipc_wait[cpuid] == IPC_WAIT_FOR_END) {
xSemaphoreGive(s_ipc_ack[cpuid]);
}
s_func[cpuid] = NULL;
}
}
@ -142,6 +141,7 @@ static esp_err_t esp_ipc_call_and_wait(uint32_t cpu_id, esp_ipc_func_t func, voi
s_ipc_wait[cpu_id] = wait_for;
xSemaphoreGive(s_ipc_sem[cpu_id]);
xSemaphoreTake(s_ipc_ack[cpu_id], portMAX_DELAY);
s_func[cpu_id] = NULL;
#ifdef CONFIG_ESP_IPC_USES_CALLERS_PRIORITY
xSemaphoreGive(s_ipc_mutex[cpu_id]);
#else

@ -1 +1 @@
Subproject commit 045b526641b7dbe7a6be3d9039be93a2c1b56f10
Subproject commit e6945e61f7c63545a77b0575c3770a85b4de948e

@ -1 +1 @@
Subproject commit c4badd394eda18199c0196ed0be1e2d635f0a5f6
Subproject commit 334e95fac52a607150157ae5199a19e11f843982