mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
lwip: fix lwip dual core issue
Call xSemaphoreGiveFromISR instead xSemaphoreGive when the calling context is in critical section.
This commit is contained in:
parent
f1390fa7c9
commit
5e2ae7ac19
@ -42,6 +42,8 @@
|
|||||||
/* This is the number of threads that can be started with sys_thread_new() */
|
/* This is the number of threads that can be started with sys_thread_new() */
|
||||||
#define SYS_THREAD_MAX 4
|
#define SYS_THREAD_MAX 4
|
||||||
|
|
||||||
|
static bool g_lwip_in_critical_section = false;
|
||||||
|
|
||||||
#if !LWIP_COMPAT_MUTEX
|
#if !LWIP_COMPAT_MUTEX
|
||||||
/** Create a new mutex
|
/** Create a new mutex
|
||||||
* @param mutex pointer to the mutex to create
|
* @param mutex pointer to the mutex to create
|
||||||
@ -122,7 +124,11 @@ sys_sem_new(sys_sem_t *sem, u8_t count)
|
|||||||
void
|
void
|
||||||
sys_sem_signal(sys_sem_t *sem)
|
sys_sem_signal(sys_sem_t *sem)
|
||||||
{
|
{
|
||||||
|
if (g_lwip_in_critical_section){
|
||||||
|
xSemaphoreGiveFromISR(*sem, NULL);
|
||||||
|
} else {
|
||||||
xSemaphoreGive(*sem);
|
xSemaphoreGive(*sem);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
@ -453,6 +459,7 @@ sys_prot_t
|
|||||||
sys_arch_protect(void)
|
sys_arch_protect(void)
|
||||||
{
|
{
|
||||||
portENTER_CRITICAL(&g_lwip_mux);
|
portENTER_CRITICAL(&g_lwip_mux);
|
||||||
|
g_lwip_in_critical_section = true;
|
||||||
return (sys_prot_t) 1;
|
return (sys_prot_t) 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,6 +474,7 @@ void
|
|||||||
sys_arch_unprotect(sys_prot_t pval)
|
sys_arch_unprotect(sys_prot_t pval)
|
||||||
{
|
{
|
||||||
(void) pval;
|
(void) pval;
|
||||||
|
g_lwip_in_critical_section = false;
|
||||||
portEXIT_CRITICAL(&g_lwip_mux);
|
portEXIT_CRITICAL(&g_lwip_mux);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user