diff --git a/test/unit/arch/sys_arch.c b/test/unit/arch/sys_arch.c index cf826ebf..ed0e34f0 100644 --- a/test/unit/arch/sys_arch.c +++ b/test/unit/arch/sys_arch.c @@ -365,7 +365,23 @@ sys_arch_mbox_tryfetch(sys_mbox_t *q, void **msg) } #if LWIP_NETCONN_SEM_PER_THREAD -#error LWIP_NETCONN_SEM_PER_THREAD==1 not supported +/* Simple implementation of this: unit tests only support one thread */ +static sys_sem_t global_netconn_sem; + +sys_sem_t* sys_arch_netconn_sem_get(void) +{ + return &global_netconn_sem; +} + +void sys_arch_netconn_sem_alloc(void) +{ + sys_sem_new(&global_netconn_sem, 0); +} + +void sys_arch_netconn_sem_free(void) +{ + sys_sem_free(&global_netconn_sem); +} #endif /* LWIP_NETCONN_SEM_PER_THREAD */ #endif /* !NO_SYS */ diff --git a/test/unit/arch/sys_arch.h b/test/unit/arch/sys_arch.h index 331c2f2f..9157b6a8 100644 --- a/test/unit/arch/sys_arch.h +++ b/test/unit/arch/sys_arch.h @@ -68,5 +68,12 @@ void test_sys_arch_wait_callback(test_sys_arch_waiting_fn waiting_fn); /* current time */ extern u32_t lwip_sys_now; +sys_sem_t* sys_arch_netconn_sem_get(void); +void sys_arch_netconn_sem_alloc(void); +void sys_arch_netconn_sem_free(void); +#define LWIP_NETCONN_THREAD_SEM_GET() sys_arch_netconn_sem_get() +#define LWIP_NETCONN_THREAD_SEM_ALLOC() sys_arch_netconn_sem_alloc() +#define LWIP_NETCONN_THREAD_SEM_FREE() sys_arch_netconn_sem_free() + #endif /* LWIP_HDR_TEST_SYS_ARCH_H */ diff --git a/test/unit/lwipopts.h b/test/unit/lwipopts.h index c00ace15..e4523fc1 100644 --- a/test/unit/lwipopts.h +++ b/test/unit/lwipopts.h @@ -46,6 +46,7 @@ #define LWIP_NETCONN !NO_SYS #define LWIP_SOCKET !NO_SYS #define LWIP_NETCONN_FULLDUPLEX LWIP_SOCKET +#define LWIP_NETCONN_SEM_PER_THREAD 1 #define LWIP_NETBUF_RECVINFO 1 #define LWIP_HAVE_LOOPIF 1 #define TCPIP_THREAD_TEST