[kservice]add hook for RT_ASSERT
This commit is contained in:
parent
a51f6afa41
commit
892eac2cce
|
@ -84,8 +84,13 @@ while (0)
|
||||||
if (!(EX)) \
|
if (!(EX)) \
|
||||||
{ \
|
{ \
|
||||||
volatile char dummy = 0; \
|
volatile char dummy = 0; \
|
||||||
rt_kprintf("(%s) assert failed at %s:%d \n", #EX, __FUNCTION__, __LINE__);\
|
if (rt_assert_hook == RT_NULL) \
|
||||||
while (dummy == 0); \
|
{ \
|
||||||
|
rt_kprintf("(%s) assert failed at %s:%d \n", #EX, __FUNCTION__, __LINE__);\
|
||||||
|
while (dummy == 0); \
|
||||||
|
} else { \
|
||||||
|
rt_assert_hook(#EX, __FUNCTION__, __LINE__); \
|
||||||
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Macro to check current context */
|
/* Macro to check current context */
|
||||||
|
|
|
@ -515,6 +515,11 @@ rt_uint32_t rt_strcasecmp(const char *a, const char *b);
|
||||||
|
|
||||||
void rt_show_version(void);
|
void rt_show_version(void);
|
||||||
|
|
||||||
|
#ifdef RT_DEBUG
|
||||||
|
extern void (*rt_assert_hook)(const char* ex, const char* func, rt_size_t line);
|
||||||
|
void rt_assert_set_hook(void (*hook)(const char* ex, const char* func, rt_size_t line));
|
||||||
|
#endif /* RT_DEBUG */
|
||||||
|
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -1237,6 +1237,19 @@ int __rt_ffs(int value)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef RT_DEBUG
|
||||||
|
/* RT_ASSERT(EX)'s hook */
|
||||||
|
void (*rt_assert_hook)(const char* ex, const char* func, rt_size_t line);
|
||||||
|
/**
|
||||||
|
* This function will set a hook function to RT_ASSERT(EX). It will run when the expression is false.
|
||||||
|
*
|
||||||
|
* @param hook the hook function
|
||||||
|
*/
|
||||||
|
void rt_assert_set_hook(void (*hook)(const char* ex, const char* func, rt_size_t line)) {
|
||||||
|
rt_assert_hook = hook;
|
||||||
|
}
|
||||||
|
#endif /* RT_DEBUG */
|
||||||
|
|
||||||
#if !defined (RT_USING_NEWLIB) && defined (RT_USING_MINILIBC) && defined (__GNUC__)
|
#if !defined (RT_USING_NEWLIB) && defined (RT_USING_MINILIBC) && defined (__GNUC__)
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
void *memcpy(void *dest, const void *src, size_t n) __attribute__((weak, alias("rt_memcpy")));
|
void *memcpy(void *dest, const void *src, size_t n) __attribute__((weak, alias("rt_memcpy")));
|
||||||
|
|
Loading…
Reference in New Issue