diff --git a/components/lwip/apps/multi-threads/sockets_mt.c b/components/lwip/apps/multi-threads/sockets_mt.c index 901895d2..b6561912 100644 --- a/components/lwip/apps/multi-threads/sockets_mt.c +++ b/components/lwip/apps/multi-threads/sockets_mt.c @@ -170,12 +170,12 @@ static volatile sock_mt_t DRAM_ATTR sockets_mt[NUM_SOCKETS]; static inline void _sock_mt_init(int s) { - memset((void *)&sockets_mt[s], 0, sizeof(sock_mt_t)); + memset((void *)&sockets_mt[s - LWIP_SOCKET_OFFSET], 0, sizeof(sock_mt_t)); } static inline int _sock_is_opened(int s) { - return sockets_mt[s].opened != 0; + return sockets_mt[s - LWIP_SOCKET_OFFSET].opened != 0; } static inline void _sock_set_open(int s, int opened) @@ -183,7 +183,7 @@ static inline void _sock_set_open(int s, int opened) SYS_ARCH_DECL_PROTECT(lev); SYS_ARCH_PROTECT(lev); - sockets_mt[s].opened = opened; + sockets_mt[s - LWIP_SOCKET_OFFSET].opened = opened; SYS_ARCH_UNPROTECT(lev); } @@ -192,23 +192,23 @@ static inline void _sock_set_state(int s, int state) SYS_ARCH_DECL_PROTECT(lev); SYS_ARCH_PROTECT(lev); - sockets_mt[s].state = state; + sockets_mt[s - LWIP_SOCKET_OFFSET].state = state; SYS_ARCH_UNPROTECT(lev); } static inline int _sock_get_state(int s) { - return sockets_mt[s].state; + return sockets_mt[s - LWIP_SOCKET_OFFSET].state; } static inline int _sock_get_select(int s, int select) { - return sockets_mt[s].select & select; + return sockets_mt[s - LWIP_SOCKET_OFFSET].select & select; } static int inline _sock_is_lock(int s, int l) { - return sockets_mt[s].lock & l; + return sockets_mt[s - LWIP_SOCKET_OFFSET].lock & l; } static int inline _sock_next_lock(int lock) @@ -221,7 +221,7 @@ static void inline _sock_set_select(int s, int select) SYS_ARCH_DECL_PROTECT(lev); SYS_ARCH_PROTECT(lev); - sockets_mt[s].select |= select; + sockets_mt[s - LWIP_SOCKET_OFFSET].select |= select; SYS_ARCH_UNPROTECT(lev); } @@ -230,7 +230,7 @@ static void inline _sock_reset_select(int s, int select) SYS_ARCH_DECL_PROTECT(lev); SYS_ARCH_PROTECT(lev); - sockets_mt[s].select &= ~select; + sockets_mt[s - LWIP_SOCKET_OFFSET].select &= ~select; SYS_ARCH_UNPROTECT(lev); } @@ -244,13 +244,13 @@ static int _sock_try_lock(int s, int l) goto exit; } - if (sockets_mt[s].lock & l) { + if (sockets_mt[s - LWIP_SOCKET_OFFSET].lock & l) { ret = ERR_INPROGRESS; goto exit; } SYS_ARCH_PROTECT(lev); - sockets_mt[s].lock |= l; + sockets_mt[s - LWIP_SOCKET_OFFSET].lock |= l; SYS_ARCH_UNPROTECT(lev); exit: @@ -287,7 +287,7 @@ static int _sock_unlock(int s, int l) SOCK_MT_DEBUG(1, "s %d l %d exit ", s, l); SYS_ARCH_PROTECT(lev); - sockets_mt[s].lock &= ~l; + sockets_mt[s - LWIP_SOCKET_OFFSET].lock &= ~l; SYS_ARCH_UNPROTECT(lev); if (!_sock_is_opened(s)) { @@ -305,7 +305,7 @@ static int lwip_enter_mt_select(int s, fd_set *read_set, fd_set *write_set) { int i; - if (s > NUM_SOCKETS || s < 0) + if (s > NUM_SOCKETS + LWIP_SOCKET_OFFSET || s < LWIP_SOCKET_OFFSET) return -1; for (i = 0; i < s; i++) {