VFS: Optionally disable the VFS implementation of select()
This allows to temporarily resolve issues like https://github.com/espressif/esp-idf/issues/1987 while bugs are fixed in the VFS implementation of select().
This commit is contained in:
parent
c9f8470fdf
commit
004bf84d8c
3 changed files with 23 additions and 0 deletions
|
@ -37,6 +37,16 @@ config LWIP_MAX_SOCKETS
|
|||
the maximum amount of sockets here. The valid value is from 1
|
||||
to 16.
|
||||
|
||||
config USE_ONLY_LWIP_SELECT
|
||||
bool "Support LWIP socket select() only"
|
||||
default n
|
||||
help
|
||||
The virtual filesystem layer of select() redirects sockets to
|
||||
lwip_select() and non-socket file descriptors to their respective driver
|
||||
implementations. If this option is enabled then all calls of select()
|
||||
will be redirected to lwip_select(), therefore, select can be used
|
||||
for sockets only.
|
||||
|
||||
config LWIP_SO_REUSE
|
||||
bool "Enable SO_REUSEADDR option"
|
||||
default y
|
||||
|
|
|
@ -14,8 +14,17 @@
|
|||
|
||||
#include <sys/select.h>
|
||||
#include "esp_vfs.h"
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#ifdef CONFIG_USE_ONLY_LWIP_SELECT
|
||||
#include "lwip/sockets.h"
|
||||
#endif
|
||||
|
||||
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout)
|
||||
{
|
||||
#ifdef CONFIG_USE_ONLY_LWIP_SELECT
|
||||
return lwip_select(nfds, readfds, writefds, errorfds, timeout);
|
||||
#else
|
||||
return esp_vfs_select(nfds, readfds, writefds, errorfds, timeout);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -93,6 +93,10 @@ Examples demonstrating the use of :cpp:func:`select` with VFS file descriptors
|
|||
are the :example:`peripherals/uart_select` and the :example:`system/select`
|
||||
examples.
|
||||
|
||||
If :cpp:func:`select` is used for socket file descriptors only then one can
|
||||
enable the :ref:`CONFIG_USE_ONLY_LWIP_SELECT` option which can reduce the code
|
||||
size and improve performance.
|
||||
|
||||
Paths
|
||||
-----
|
||||
|
||||
|
|
Loading…
Reference in a new issue