Просмотр исходного кода

lwip: Add to sys_arch_protect() a check that the mutex is created before use if not then creates it

Closes: https://github.com/espressif/esp-idf/issues/944
Closes: https://github.com/espressif/esp-idf/issues/3931
Closes: WIFI-1019
KonstantinKondrashov 6 лет назад
Родитель
Сommit
1c12e67c8a
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      components/lwip/port/esp32/freertos/sys_arch.c

+ 6 - 1
components/lwip/port/esp32/freertos/sys_arch.c

@@ -385,9 +385,11 @@ sys_thread_new(const char *name, lwip_thread_fn thread, void *arg, int stacksize
 void
 sys_init(void)
 {
+  if (!g_lwip_protect_mutex) {
     if (ERR_OK != sys_mutex_new(&g_lwip_protect_mutex)) {
-        ESP_LOGE(TAG, "sys_init: failed to init lwip protect mutex\n");
+      ESP_LOGE(TAG, "sys_init: failed to init lwip protect mutex\n");
     }
+  }
 
     // Create the pthreads key for the per-thread semaphore storage
     pthread_key_create(&sys_thread_sem_key, sys_thread_sem_free);
@@ -425,6 +427,9 @@ sys_now(void)
 sys_prot_t
 sys_arch_protect(void)
 {
+  if (!g_lwip_protect_mutex) {
+    sys_mutex_new(&g_lwip_protect_mutex);
+  }
   sys_mutex_lock(&g_lwip_protect_mutex);
   return (sys_prot_t) 1;
 }