Merge branch 'bugfix/lwip_assert' into 'master'

lwip: Remove port-specific sys_arch_assert(), use libc __assert_func() instead

See merge request !926
This commit is contained in:
Angus Gratton 2017-06-28 06:09:04 +08:00
commit 540a506d0f
3 changed files with 20 additions and 17 deletions

View file

@ -36,6 +36,8 @@
#include <stdint.h>
#include <errno.h>
#include <assert.h>
#include <stdio.h>
#include "arch/sys_arch.h"
@ -67,11 +69,26 @@ typedef int sys_prot_t;
#include <stdio.h>
#define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0)
#define LWIP_PLATFORM_ASSERT(x) do {printf(x); sys_arch_assert(__FILE__, __LINE__);} while(0)
// __assert_func is the assertion failure handler from newlib, defined in assert.h
#define LWIP_PLATFORM_ASSERT(message) __assert_func(__FILE__, __LINE__, __ASSERT_FUNC, message)
#ifdef NDEBUG
#define LWIP_NOASSERT
#endif
//#define LWIP_ERROR
#else // Assertions enabled
// If assertions are on, the default LWIP_ERROR handler behaviour is to
// abort w/ an assertion failure. Don't do this, instead just print the error (if LWIP_DEBUG is set)
// and run the handler (same as the LWIP_ERROR behaviour if LWIP_NOASSERT is set).
#ifdef LWIP_DEBUG
#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
puts(message); handler;}} while(0)
#else
// If LWIP_DEBUG is not set, return the error silently (default LWIP behaviour, also.)
#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
handler;}} while(0)
#endif // LWIP_DEBUG
#endif /* NDEBUG */
#endif /* __ARCH_CC_H__ */

View file

@ -67,7 +67,6 @@ typedef struct sys_mbox_s {
#define sys_sem_valid( x ) ( ( ( *x ) == NULL) ? pdFALSE : pdTRUE )
#define sys_sem_set_invalid( x ) ( ( *x ) = NULL )
void sys_arch_assert(const char *file, int line);
uint32_t system_get_time(void);
void sys_delay_ms(uint32_t ms);
sys_sem_t* sys_thread_sem_init(void);

View file

@ -482,19 +482,6 @@ sys_arch_unprotect(sys_prot_t pval)
sys_mutex_unlock(&g_lwip_protect_mutex);
}
/*-----------------------------------------------------------------------------------*/
/*
* Prints an assertion messages and aborts execution.
*/
void
sys_arch_assert(const char *file, int line)
{
ESP_LOGE(TAG, "\nAssertion: %d in %s\n", line, file);
// vTaskEnterCritical();
while(1);
}
#define SYS_TLS_INDEX CONFIG_LWIP_THREAD_LOCAL_STORAGE_INDEX
/*
* get per thread semphore