mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-06-27 12:16:18 +08:00
feat(lwip): Make raw LWIP API disable
This commit is contained in:
@ -16,6 +16,17 @@ endmenu # LWIP ARP
|
|||||||
|
|
||||||
menu "SOCKET"
|
menu "SOCKET"
|
||||||
|
|
||||||
|
config LWIP_SOCKET_MULTITHREAD
|
||||||
|
bool "LWIP socket supports multithread"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable the option can enable LWIP socket multithread and all
|
||||||
|
function will be thread safe.
|
||||||
|
|
||||||
|
But all LWIP raw socket APIs will be renamed ao that user can
|
||||||
|
not call "lwip_xxx"(for example "lwip_socket"), because compiling may faile.
|
||||||
|
So if you want to use LWIP raw socket APIs, please disable the option.
|
||||||
|
|
||||||
config LWIP_MAX_SOCKETS
|
config LWIP_MAX_SOCKETS
|
||||||
int "Max number of open sockets"
|
int "Max number of open sockets"
|
||||||
range 1 16
|
range 1 16
|
||||||
|
@ -3,9 +3,67 @@
|
|||||||
|
|
||||||
#ifdef SOCKETS_MT
|
#ifdef SOCKETS_MT
|
||||||
|
|
||||||
#include "../../lwip/src/api/sockets.c"
|
|
||||||
#include "lwip/priv/api_msg.h"
|
#include "lwip/priv/api_msg.h"
|
||||||
|
|
||||||
|
/* This helps code parsers/code completion by not having the COMPAT functions as defines */
|
||||||
|
|
||||||
|
#undef lwip_accept
|
||||||
|
#undef lwip_bind
|
||||||
|
#undef lwip_shutdown
|
||||||
|
#undef lwip_getpeername
|
||||||
|
#undef lwip_getsockname
|
||||||
|
#undef lwip_setsockopt
|
||||||
|
#undef lwip_getsockopt
|
||||||
|
#undef lwip_close
|
||||||
|
#undef lwip_connect
|
||||||
|
#undef lwip_listen
|
||||||
|
#undef lwip_recv
|
||||||
|
#undef lwip_recvfrom
|
||||||
|
#undef lwip_send
|
||||||
|
#undef lwip_sendmsg
|
||||||
|
#undef lwip_sendto
|
||||||
|
#undef lwip_socket
|
||||||
|
#undef lwip_select
|
||||||
|
#undef lwip_ioctlsocket
|
||||||
|
|
||||||
|
#define lwip_accept lwip_accept_esp
|
||||||
|
#define lwip_bind lwip_bind_esp
|
||||||
|
#define lwip_shutdown lwip_shutdown_esp
|
||||||
|
#define lwip_getpeername lwip_getpeername_esp
|
||||||
|
#define lwip_getsockname lwip_getsockname_esp
|
||||||
|
#define lwip_setsockopt lwip_setsockopt_esp
|
||||||
|
#define lwip_getsockopt lwip_getsockopt_esp
|
||||||
|
#define lwip_close lwip_closesocket_esp
|
||||||
|
#define lwip_connect lwip_connect_esp
|
||||||
|
#define lwip_listen lwip_listen_esp
|
||||||
|
#define lwip_recv lwip_recv_esp
|
||||||
|
#define lwip_recvfrom lwip_recvfrom_esp
|
||||||
|
#define lwip_send lwip_send_esp
|
||||||
|
#define lwip_sendmsg lwip_sendmsg_esp
|
||||||
|
#define lwip_sendto lwip_sendto_esp
|
||||||
|
#define lwip_socket lwip_socket_esp
|
||||||
|
#define lwip_select lwip_select_esp
|
||||||
|
#define lwip_ioctlsocket lwip_ioctl_esp
|
||||||
|
|
||||||
|
#if LWIP_POSIX_SOCKETS_IO_NAMES
|
||||||
|
#undef lwip_read
|
||||||
|
#undef lwip_write
|
||||||
|
#undef lwip_writev
|
||||||
|
#undef lwip_close
|
||||||
|
#undef closesocket
|
||||||
|
#undef lwip_fcntl
|
||||||
|
#undef lwip_ioctl
|
||||||
|
|
||||||
|
#define lwip_read lwip_read_esp
|
||||||
|
#define lwip_write lwip_write_esp
|
||||||
|
#define lwip_writev lwip_writev_esp
|
||||||
|
#define lwip_close lwip_close_esp
|
||||||
|
#define lwip_fcntl lwip_fcntl_esp
|
||||||
|
#define lwip_ioctl lwip_ioctl_esp
|
||||||
|
#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
|
||||||
|
|
||||||
|
#include "../../lwip/src/api/sockets.c"
|
||||||
|
|
||||||
#ifndef LWIP_SYNC_MT_SLEEP_MS
|
#ifndef LWIP_SYNC_MT_SLEEP_MS
|
||||||
#define LWIP_SYNC_MT_SLEEP_MS 10
|
#define LWIP_SYNC_MT_SLEEP_MS 10
|
||||||
#endif
|
#endif
|
||||||
@ -600,7 +658,7 @@ int lwip_socket_mt(int domain, int type, int protocol)
|
|||||||
int s;
|
int s;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
s = lwip_socket(domain, type, protocol);
|
s = lwip_socket_esp(domain, type, protocol);
|
||||||
if (s < 0)
|
if (s < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -614,7 +672,7 @@ int lwip_socket_mt(int domain, int type, int protocol)
|
|||||||
sockets_mt[s].lock[i] = NULL;
|
sockets_mt[s].lock[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_close(s);
|
lwip_close_esp(s);
|
||||||
s = -1;
|
s = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +688,7 @@ int lwip_bind_mt(int s, const struct sockaddr *name, socklen_t namelen)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_BIND);
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_BIND);
|
||||||
|
|
||||||
ret = lwip_bind(s, name, namelen);
|
ret = lwip_bind_esp(s, name, namelen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_BIND);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_BIND);
|
||||||
|
|
||||||
@ -644,7 +702,7 @@ int lwip_connect_mt(int s, const struct sockaddr *name, socklen_t namelen)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_CONNECT);
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_CONNECT);
|
||||||
|
|
||||||
ret = lwip_connect(s, name, namelen);
|
ret = lwip_connect_esp(s, name, namelen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_CONNECT);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_CONNECT);
|
||||||
|
|
||||||
@ -657,7 +715,7 @@ int lwip_listen_mt(int s, int backlog)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_LISTEN);
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_LISTEN);
|
||||||
|
|
||||||
ret = lwip_listen(s, backlog);
|
ret = lwip_listen_esp(s, backlog);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_LISTEN);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_LISTEN);
|
||||||
|
|
||||||
@ -671,7 +729,7 @@ int lwip_accept_mt(int s, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_ACCEPT)
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_ACCEPT)
|
||||||
|
|
||||||
ret = lwip_accept(s, addr, addrlen);
|
ret = lwip_accept_esp(s, addr, addrlen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_ACCEPT);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_ACCEPT);
|
||||||
|
|
||||||
@ -688,7 +746,7 @@ int lwip_accept_mt(int s, struct sockaddr *addr, socklen_t *addrlen)
|
|||||||
sockets_mt[ret].lock[i] = NULL;
|
sockets_mt[ret].lock[i] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
lwip_close(ret);
|
lwip_close_esp(ret);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -704,7 +762,7 @@ int lwip_getpeername_mt(int s, struct sockaddr *name, socklen_t *namelen)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
ret = lwip_getpeername(s, name, namelen);
|
ret = lwip_getpeername_esp(s, name, namelen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -717,7 +775,7 @@ int lwip_getsockname_mt(int s, struct sockaddr *name, socklen_t *namelen)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
ret = lwip_getsockname(s, name, namelen);
|
ret = lwip_getsockname_esp(s, name, namelen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -730,7 +788,7 @@ int lwip_setsockopt_mt(int s, int level, int optname, const void *optval, sockle
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
ret = lwip_setsockopt(s, level, optname, optval, optlen);
|
ret = lwip_setsockopt_esp(s, level, optname, optval, optlen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -755,7 +813,7 @@ int lwip_getsockopt_mt(int s, int level, int optname, void *optval, socklen_t *o
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
ret = lwip_getsockopt(s, level, optname, optval, optlen);
|
ret = lwip_getsockopt_esp(s, level, optname, optval, optlen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -768,7 +826,7 @@ int lwip_ioctl_mt(int s, long cmd, void *argp)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0)
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0)
|
||||||
|
|
||||||
ret = lwip_ioctl(s, cmd, argp);
|
ret = lwip_ioctl_esp(s, cmd, argp);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -782,7 +840,7 @@ int lwip_sendto_mt(int s, const void *data, size_t size, int flags,
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
||||||
|
|
||||||
ret = lwip_sendto(s, data, size, flags, to, tolen);
|
ret = lwip_sendto_esp(s, data, size, flags, to, tolen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
||||||
|
|
||||||
@ -795,7 +853,7 @@ int lwip_send_mt(int s, const void *data, size_t size, int flags)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
LWIP_ENTER_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
||||||
|
|
||||||
ret = lwip_send(s, data, size, flags);
|
ret = lwip_send_esp(s, data, size, flags);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
LWIP_EXIT_MT(s, SOCK_MT_STATE, SOCK_MT_STATE_SEND);
|
||||||
|
|
||||||
@ -809,7 +867,7 @@ int lwip_recvfrom_mt(int s, void *mem, size_t len, int flags,
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_RECV, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_RECV, 0);
|
||||||
|
|
||||||
ret = lwip_recvfrom(s, mem, len, flags, from, fromlen);
|
ret = lwip_recvfrom_esp(s, mem, len, flags, from, fromlen);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_RECV, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_RECV, 0);
|
||||||
|
|
||||||
@ -837,7 +895,7 @@ int lwip_fcntl_mt(int s, int cmd, int val)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
ret = lwip_fcntl(s, cmd, val);
|
ret = lwip_fcntl_esp(s, cmd, val);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_IOCTL, 0);
|
||||||
|
|
||||||
@ -852,7 +910,7 @@ static int __lwip_shutdown_mt(int s, int how)
|
|||||||
|
|
||||||
lwip_sync_mt(s);
|
lwip_sync_mt(s);
|
||||||
|
|
||||||
ret = lwip_shutdown(s, how);
|
ret = lwip_shutdown_esp(s, how);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_SHUTDOWN, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_SHUTDOWN, 0);
|
||||||
|
|
||||||
@ -861,7 +919,7 @@ static int __lwip_shutdown_mt(int s, int how)
|
|||||||
|
|
||||||
int lwip_shutdown_mt(int s, int how)
|
int lwip_shutdown_mt(int s, int how)
|
||||||
{
|
{
|
||||||
return lwip_shutdown(s, how);
|
return lwip_shutdown_esp(s, how);
|
||||||
}
|
}
|
||||||
|
|
||||||
int lwip_close_mt(int s)
|
int lwip_close_mt(int s)
|
||||||
@ -875,7 +933,7 @@ int lwip_close_mt(int s)
|
|||||||
|
|
||||||
LWIP_ENTER_MT(s, SOCK_MT_CLOSE, 0);
|
LWIP_ENTER_MT(s, SOCK_MT_CLOSE, 0);
|
||||||
|
|
||||||
ret = lwip_close(s);
|
ret = lwip_close_esp(s);
|
||||||
|
|
||||||
LWIP_EXIT_MT(s, SOCK_MT_CLOSE, 0);
|
LWIP_EXIT_MT(s, SOCK_MT_CLOSE, 0);
|
||||||
|
|
||||||
@ -911,7 +969,7 @@ int lwip_select_mt(int maxfdp1, fd_set *readset, fd_set *writeset,
|
|||||||
|
|
||||||
LWIP_ENTER_MT(maxfdp1, SOCK_MT_SELECT, (int)pset);
|
LWIP_ENTER_MT(maxfdp1, SOCK_MT_SELECT, (int)pset);
|
||||||
|
|
||||||
ret = lwip_select(maxfdp1, readset, writeset, exceptset, timeout);
|
ret = lwip_select_esp(maxfdp1, readset, writeset, exceptset, timeout);
|
||||||
|
|
||||||
LWIP_EXIT_MT(maxfdp1, SOCK_MT_SELECT, (int)pset);
|
LWIP_EXIT_MT(maxfdp1, SOCK_MT_SELECT, (int)pset);
|
||||||
|
|
||||||
|
@ -20,3 +20,7 @@ COMPONENT_SRCDIRS += apps/dhcpserver \
|
|||||||
CFLAGS += -Wno-address #lots of LWIP source files evaluate macros that check address of stack variables
|
CFLAGS += -Wno-address #lots of LWIP source files evaluate macros that check address of stack variables
|
||||||
|
|
||||||
lwip/src/apps/sntp/sntp.o: CFLAGS += -Wno-implicit-function-declaration
|
lwip/src/apps/sntp/sntp.o: CFLAGS += -Wno-implicit-function-declaration
|
||||||
|
|
||||||
|
ifdef CONFIG_LWIP_SOCKET_MULTITHREAD
|
||||||
|
COMPONENT_OBJEXCLUDE := lwip/src/api/sockets.o
|
||||||
|
endif
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
#include "posix/sys/socket.h"
|
#include "posix/sys/socket.h"
|
||||||
|
|
||||||
|
#ifdef SOCKETS_MT
|
||||||
int lwip_mt_init(void);
|
int lwip_mt_init(void);
|
||||||
int lwip_socket_mt(int domain, int type, int protocol);
|
int lwip_socket_mt(int domain, int type, int protocol);
|
||||||
int lwip_bind_mt(int s, const struct sockaddr *name, socklen_t namelen);
|
int lwip_bind_mt(int s, const struct sockaddr *name, socklen_t namelen);
|
||||||
@ -109,5 +110,6 @@ int lwip_fcntl_mt(int s, int cmd, int val);
|
|||||||
#define closesocket(s) lwip_close_mt(s)
|
#define closesocket(s) lwip_close_mt(s)
|
||||||
#define fcntl(a,b,c) lwip_fcntl_mt(a,b,c)
|
#define fcntl(a,b,c) lwip_fcntl_mt(a,b,c)
|
||||||
#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
|
#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */
|
||||||
|
#endif /* SOCKETS_MT */
|
||||||
|
|
||||||
#endif /* _SOCKET_H_ */
|
#endif /* _SOCKET_H_ */
|
||||||
|
@ -50,7 +50,12 @@
|
|||||||
#include "esp_libc.h"
|
#include "esp_libc.h"
|
||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_LWIP_SOCKET_MULTITHREAD
|
||||||
#define SOCKETS_MT
|
#define SOCKETS_MT
|
||||||
|
#if defined(LWIP_HDR_SOCKETS_H) && !defined(_SOCKET_MT_H_)
|
||||||
|
#error Please use <sys/socket.h> instead of "lwip/sockets.h"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define SOCKETS_TCP_TRACE
|
//#define SOCKETS_TCP_TRACE
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ssl/ssl_os_port.h"
|
#include "ssl/ssl_os_port.h"
|
||||||
#include "lwip/sockets.h"
|
#include <sys/socket.h>
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user