summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguo <[email protected]>2021-06-20 11:27:52 +0800
committerGitHub <[email protected]>2021-06-20 11:27:52 +0800
commitb032f9a6e26efba24edc74bffd7677219503e373 (patch)
tree7546652a0402a9bcd0aed4a2d76f0756132b3ece
parente6887932bdeb8443264bfa1a0348061dab382087 (diff)
parent485df7a1f444a440d297a19e2c12e1b5ad9612ce (diff)
Merge pull request #4793 from mysterywolf/lwipcc
[bug][lwip] 修复lwip临界区保护的bug
-rw-r--r--bsp/stm32/libraries/HAL_Drivers/drv_eth.c5
-rw-r--r--components/net/lwip-1.4.1/src/arch/include/arch/cc.h12
-rw-r--r--components/net/lwip-2.0.2/src/arch/include/arch/cc.h10
-rw-r--r--components/net/lwip-2.1.2/src/arch/include/arch/cc.h10
4 files changed, 15 insertions, 22 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c
index 0506f6495c..41e86b5134 100644
--- a/bsp/stm32/libraries/HAL_Drivers/drv_eth.c
+++ b/bsp/stm32/libraries/HAL_Drivers/drv_eth.c
@@ -11,11 +11,10 @@
* 2019-09-03 xiaofan optimize link change detection process
*/
-#include "board.h"
#include "drv_config.h"
-#include <netif/ethernetif.h>
-#include "lwipopts.h"
#include "drv_eth.h"
+#include <netif/ethernetif.h>
+#include <lwipopts.h>
/*
* Emac driver uses CubeMX tool to generate emac and phy's configuration,
diff --git a/components/net/lwip-1.4.1/src/arch/include/arch/cc.h b/components/net/lwip-1.4.1/src/arch/include/arch/cc.h
index c312f50df5..82387b432d 100644
--- a/components/net/lwip-1.4.1/src/arch/include/arch/cc.h
+++ b/components/net/lwip-1.4.1/src/arch/include/arch/cc.h
@@ -37,8 +37,9 @@
#include <rthw.h>
#include <rtthread.h>
-
+#include <string.h>
#include <stdint.h>
+
typedef uint8_t u8_t;
typedef int8_t s8_t;
typedef uint16_t u16_t;
@@ -99,11 +100,8 @@ void sys_arch_assert(const char* file, int line);
#define LWIP_PLATFORM_DIAG(x) do {rt_kprintf x;} while(0)
#define LWIP_PLATFORM_ASSERT(x) do {rt_kprintf(x); sys_arch_assert(__FILE__, __LINE__);}while(0)
-#include <string.h>
-
-#define SYS_ARCH_DECL_PROTECT(level)
-#define SYS_ARCH_PROTECT(level) rt_enter_critical()
-#define SYS_ARCH_UNPROTECT(level) rt_exit_critical()
+#define SYS_ARCH_DECL_PROTECT(level) register rt_base_t level
+#define SYS_ARCH_PROTECT(level) do {level = rt_hw_interrupt_disable();} while(0)
+#define SYS_ARCH_UNPROTECT(level) do {rt_hw_interrupt_enable(level);} while(0)
#endif /* __ARCH_CC_H__ */
-
diff --git a/components/net/lwip-2.0.2/src/arch/include/arch/cc.h b/components/net/lwip-2.0.2/src/arch/include/arch/cc.h
index 4829f5b2e5..28f86d257e 100644
--- a/components/net/lwip-2.0.2/src/arch/include/arch/cc.h
+++ b/components/net/lwip-2.0.2/src/arch/include/arch/cc.h
@@ -37,6 +37,7 @@
#include <rthw.h>
#include <rtthread.h>
+#include <string.h>
#define U16_F "hu"
#define S16_F "hd"
@@ -90,11 +91,8 @@ void sys_arch_assert(const char* file, int line);
#define LWIP_PLATFORM_DIAG(x) do {rt_kprintf x;} while(0)
#define LWIP_PLATFORM_ASSERT(x) do {rt_kprintf(x); sys_arch_assert(__FILE__, __LINE__);}while(0)
-#include <string.h>
-
-#define SYS_ARCH_DECL_PROTECT(level)
-#define SYS_ARCH_PROTECT(level) rt_enter_critical()
-#define SYS_ARCH_UNPROTECT(level) rt_exit_critical()
+#define SYS_ARCH_DECL_PROTECT(level) register rt_base_t level
+#define SYS_ARCH_PROTECT(level) do {level = rt_hw_interrupt_disable();} while(0)
+#define SYS_ARCH_UNPROTECT(level) do {rt_hw_interrupt_enable(level);} while(0)
#endif /* __ARCH_CC_H__ */
-
diff --git a/components/net/lwip-2.1.2/src/arch/include/arch/cc.h b/components/net/lwip-2.1.2/src/arch/include/arch/cc.h
index 8e98013412..28f86d257e 100644
--- a/components/net/lwip-2.1.2/src/arch/include/arch/cc.h
+++ b/components/net/lwip-2.1.2/src/arch/include/arch/cc.h
@@ -37,6 +37,7 @@
#include <rthw.h>
#include <rtthread.h>
+#include <string.h>
#define U16_F "hu"
#define S16_F "hd"
@@ -90,11 +91,8 @@ void sys_arch_assert(const char* file, int line);
#define LWIP_PLATFORM_DIAG(x) do {rt_kprintf x;} while(0)
#define LWIP_PLATFORM_ASSERT(x) do {rt_kprintf(x); sys_arch_assert(__FILE__, __LINE__);}while(0)
-#include "string.h"
-
-#define SYS_ARCH_DECL_PROTECT(level)
-#define SYS_ARCH_PROTECT(level) rt_enter_critical()
-#define SYS_ARCH_UNPROTECT(level) rt_exit_critical()
+#define SYS_ARCH_DECL_PROTECT(level) register rt_base_t level
+#define SYS_ARCH_PROTECT(level) do {level = rt_hw_interrupt_disable();} while(0)
+#define SYS_ARCH_UNPROTECT(level) do {rt_hw_interrupt_enable(level);} while(0)
#endif /* __ARCH_CC_H__ */
-