asio: updated ASIO port to use latest asio and esp-idf features

closes https://github.com/espressif/esp-idf/issues/4296
This commit is contained in:
David Cermak 2019-11-07 12:07:44 +01:00
parent 1fd7f21d8c
commit 13d603e486
4 changed files with 35 additions and 20 deletions

@ -1 +1 @@
Subproject commit 55efc179b76139c8f9b44bf22a4aba4803f7a7bd Subproject commit 3b66e5b051381fb70de9c2791df70a06181c64e3

View File

@ -22,8 +22,12 @@
# define ASIO_NO_EXCEPTIONS # define ASIO_NO_EXCEPTIONS
# endif // CONFIG_COMPILER_CXX_EXCEPTIONS # endif // CONFIG_COMPILER_CXX_EXCEPTIONS
# ifndef CONFIG_COMPILER_RTTI
# define ASIO_NO_TYPEID
# endif // CONFIG_COMPILER_RTTI
// //
// LWIP compatifility inet and address macros/functions // LWIP compatibility inet and address macros/functions
// //
# define LWIP_COMPAT_SOCKET_INET 1 # define LWIP_COMPAT_SOCKET_INET 1
# define LWIP_COMPAT_SOCKET_ADDR 1 # define LWIP_COMPAT_SOCKET_ADDR 1
@ -34,12 +38,6 @@
# define ASIO_DISABLE_SERIAL_PORT # define ASIO_DISABLE_SERIAL_PORT
# define ASIO_SEPARATE_COMPILATION # define ASIO_SEPARATE_COMPILATION
# define ASIO_STANDALONE # define ASIO_STANDALONE
# define ASIO_NO_TYPEID
# define ASIO_DISABLE_SIGNAL
# define ASIO_HAS_PTHREADS # define ASIO_HAS_PTHREADS
# define ASIO_DISABLE_EPOLL
# define ASIO_DISABLE_EVENTFD
# define ASIO_DISABLE_SIGNAL
# define ASIO_DISABLE_SIGACTION
#endif // _ESP_ASIO_CONFIG_H_ #endif // _ESP_ASIO_CONFIG_H_

View File

@ -5,7 +5,7 @@ const static char *TAG = "esp32_asio_pthread";
int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id) int pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id)
{ {
ESP_LOGW(TAG, "%s: not yet supported!", __FUNCTION__); ESP_LOGW(TAG, "%s: not yet supported!", __func__);
return 0; return 0;
} }
@ -14,6 +14,24 @@ int pthread_setcancelstate(int state, int *oldstate)
return 0; return 0;
} }
// This functions (pthread_sigmask(), sigfillset) are called from ASIO::signal_blocker to temporarily silence signals
// Since signals are not yet supported in ESP pthread these functions serve as no-ops
//
int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict oset)
{
ESP_LOGD(TAG, "%s: Signals not supported in ESP pthread", __func__);
return 0;
}
int sigfillset(sigset_t *what)
{
ESP_LOGD(TAG, "%s: Signals not supported in ESP pthread", __func__);
if (what != NULL) {
*what = ~0;
}
return 0;
}
void newlib_include_pthread_impl(void) void newlib_include_pthread_impl(void)
{ {
// Linker hook, exists for no other purpose // Linker hook, exists for no other purpose

View File

@ -15,18 +15,17 @@ Supported features
^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^
ESP platform port currently supports only network asynchronous socket operations; does not support serial port and ssl. ESP platform port currently supports only network asynchronous socket operations; does not support serial port and ssl.
Internal asio settings for ESP include Internal asio settings for ESP include
- EXCEPTIONS: Supported, choice in menuconfig
- SIGNAL, SIGACTION: Not supported - EXCEPTIONS are enabled in ASIO if enabled in menuconfig
- EPOLL, EVENTFD: Not supported - TYPEID is enabled in ASIO if enabled in menuconfig
- TYPEID: Disabled by default, but supported in toolchain and asio (provided stdlib recompiled with -frtti)
Application Example Application Example
------------------- -------------------
ESP examples are based on standard asio examples `examples/protocols/asio`: ESP examples are based on standard asio :example:`examples/protocols/asio`:
- udp_echo_server
- tcp_echo_server - :example:`examples/protocols/asio/udp_echo_server`
- chat_client - :example:`examples/protocols/asio/tcp_echo_server`
- chat_server - :example:`examples/protocols/asio/chat_client`
- :example:`examples/protocols/asio/chat_server`
Please refer to the specific example README.md for details Please refer to the specific example README.md for details