From a334ca484ae8577de5421fc0caf8197d3e5c2fdc Mon Sep 17 00:00:00 2001 From: Dirk Ziegelmeier Date: Tue, 2 Jan 2018 13:46:07 +0100 Subject: [PATCH] Start working on task #14780: Add debug helper asserts to ensure threading/locking requirements are met --- ports/win32/include/lwipopts.h | 7 ++++++- ports/win32/sys_arch.c | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ports/win32/include/lwipopts.h b/ports/win32/include/lwipopts.h index 7f7fa40..19c8656 100644 --- a/ports/win32/include/lwipopts.h +++ b/ports/win32/include/lwipopts.h @@ -64,7 +64,12 @@ #define LWIP_SO_RCVTIMEO 1 #define LWIP_SO_RCVBUF 1 -#define LWIP_TCPIP_CORE_LOCKING 1 +#define LWIP_TCPIP_CORE_LOCKING 0 + +void sys_check_core_locking(void); +#define LWIP_ASSERT_CORE_LOCKED() sys_check_core_locking() +void sys_mark_tcpip_thread(void); +#define LWIP_MARK_TCPIP_THREAD() sys_mark_tcpip_thread() #define LWIP_NETIF_LINK_CALLBACK 1 #define LWIP_NETIF_STATUS_CALLBACK 1 diff --git a/ports/win32/sys_arch.c b/ports/win32/sys_arch.c index 9c26926..10ecd8e 100644 --- a/ports/win32/sys_arch.c +++ b/ports/win32/sys_arch.c @@ -439,6 +439,30 @@ sys_thread_t sys_thread_new(const char *name, lwip_thread_fn function, void *arg return 0; } +#if LWIP_TCPIP_CORE_LOCKING +void sys_mark_tcpip_thread(void) +{ +} +void sys_check_core_locking(void) +{ +} + +#else + +static DWORD lwip_tcpip_thread_id; +void sys_mark_tcpip_thread(void) +{ + lwip_tcpip_thread_id = GetCurrentThreadId(); +} +void sys_check_core_locking(void) +{ + if (lwip_tcpip_thread_id != 0) { + DWORD current_thread_id = GetCurrentThreadId(); + LWIP_ASSERT("Function called from wrong thread", current_thread_id == lwip_tcpip_thread_id); + } +} +#endif + err_t sys_mbox_new(sys_mbox_t *mbox, int size) { LWIP_ASSERT("mbox != NULL", mbox != NULL);