浏览代码

[lwIP] add lock for init_done callback.

bernard 7 年之前
父节点
当前提交
8013d5f768
共有 2 个文件被更改,包括 6 次插入0 次删除
  1. 3 0
      components/net/lwip-1.4.1/src/arch/sys_arch.c
  2. 3 0
      components/net/lwip-2.0.2/src/arch/sys_arch.c

+ 3 - 0
components/net/lwip-1.4.1/src/arch/sys_arch.c

@@ -11,6 +11,7 @@
  * Date           Author       Notes
  * Date           Author       Notes
  * 2012-12-8      Bernard      add file header
  * 2012-12-8      Bernard      add file header
  *                             export bsd socket symbol for RT-Thread Application Module 
  *                             export bsd socket symbol for RT-Thread Application Module 
+ * 2017-11-15     Bernard      add lock for init_done callback.
  */
  */
 
 
 #include <rtthread.h>
 #include <rtthread.h>
@@ -96,6 +97,7 @@ static void tcpip_init_done_callback(void *arg)
 
 
             /* leave critical */
             /* leave critical */
             rt_exit_critical();
             rt_exit_critical();
+            LOCK_TCPIP_CORE();
 
 
             netif_add(ethif->netif, &ipaddr, &netmask, &gw,
             netif_add(ethif->netif, &ipaddr, &netmask, &gw,
                       ethif, netif_device_init, tcpip_input);
                       ethif, netif_device_init, tcpip_input);
@@ -121,6 +123,7 @@ static void tcpip_init_done_callback(void *arg)
                 netif_set_link_up(ethif->netif);
                 netif_set_link_up(ethif->netif);
             }
             }
 
 
+            UNLOCK_TCPIP_CORE();
             /* enter critical */
             /* enter critical */
             rt_enter_critical();
             rt_enter_critical();
         }
         }

+ 3 - 0
components/net/lwip-2.0.2/src/arch/sys_arch.c

@@ -11,6 +11,7 @@
  * Date           Author       Notes
  * Date           Author       Notes
  * 2012-12-8      Bernard      add file header
  * 2012-12-8      Bernard      add file header
  *                             export bsd socket symbol for RT-Thread Application Module 
  *                             export bsd socket symbol for RT-Thread Application Module 
+ * 2017-11-15     Bernard      add lock for init_done callback.
  */
  */
 
 
 #include <rtthread.h>
 #include <rtthread.h>
@@ -98,6 +99,7 @@ static void tcpip_init_done_callback(void *arg)
 
 
             /* leave critical */
             /* leave critical */
             rt_exit_critical();
             rt_exit_critical();
+			LOCK_TCPIP_CORE();
 
 
             netif_add(ethif->netif, &ipaddr, &netmask, &gw,
             netif_add(ethif->netif, &ipaddr, &netmask, &gw,
                       ethif, netif_device_init, tcpip_input);
                       ethif, netif_device_init, tcpip_input);
@@ -120,6 +122,7 @@ static void tcpip_init_done_callback(void *arg)
                 netif_set_link_up(ethif->netif);
                 netif_set_link_up(ethif->netif);
             }
             }
 
 
+			UNLOCK_TCPIP_CORE();
             /* enter critical */
             /* enter critical */
             rt_enter_critical();
             rt_enter_critical();
         }
         }