assert: Completely remove file info and condition expression
Completely remove the file info and condition expression from the the print statement if they are not enabled. This saves a little code space which adds up when there are many assert calls. In bluetooth shell test this saves around 4.5k bytes. Signed-off-by: Joakim Andersson <joakim.andersson@nordicsemi.no>
This commit is contained in:
parent
662ee8eacf
commit
27bbfb66b4
2 changed files with 37 additions and 23 deletions
|
@ -26,31 +26,35 @@
|
||||||
#define __ASSERT_PRINT(fmt, ...)
|
#define __ASSERT_PRINT(fmt, ...)
|
||||||
#endif /* CONFIG_ASSERT_VERBOSE */
|
#endif /* CONFIG_ASSERT_VERBOSE */
|
||||||
|
|
||||||
#ifdef CONFIG_ASSERT_NO_FILE_INFO
|
|
||||||
#define __ASSERT_FILE_INFO ""
|
|
||||||
#define __ASSERT_LINE_INFO 0
|
|
||||||
#else /* CONFIG_ASSERT_NO_FILE_INFO */
|
|
||||||
#define __ASSERT_FILE_INFO __FILE__
|
|
||||||
#define __ASSERT_LINE_INFO __LINE__
|
|
||||||
#endif /* CONFIG_ASSERT_NO_FILE_INFO */
|
|
||||||
|
|
||||||
#ifdef CONFIG_ASSERT_NO_COND_INFO
|
|
||||||
#define __ASSERT_COND_INFO(test) ""
|
|
||||||
#else /* CONFIG_ASSERT_NO_COND_INFO */
|
|
||||||
#define __ASSERT_COND_INFO(test) Z_STRINGIFY(test)
|
|
||||||
#endif /* CONFIG_ASSERT_NO_COND_INFO */
|
|
||||||
|
|
||||||
#ifdef CONFIG_ASSERT_NO_MSG_INFO
|
#ifdef CONFIG_ASSERT_NO_MSG_INFO
|
||||||
#define __ASSERT_MSG_INFO(fmt, ...)
|
#define __ASSERT_MSG_INFO(fmt, ...)
|
||||||
#else /* CONFIG_ASSERT_NO_MSG_INFO */
|
#else /* CONFIG_ASSERT_NO_MSG_INFO */
|
||||||
#define __ASSERT_MSG_INFO(fmt, ...) __ASSERT_PRINT("\t" fmt "\n", ##__VA_ARGS__)
|
#define __ASSERT_MSG_INFO(fmt, ...) __ASSERT_PRINT("\t" fmt "\n", ##__VA_ARGS__)
|
||||||
#endif /* CONFIG_ASSERT_NO_MSG_INFO */
|
#endif /* CONFIG_ASSERT_NO_MSG_INFO */
|
||||||
|
|
||||||
#define __ASSERT_LOC(test) \
|
#if !defined(CONFIG_ASSERT_NO_COND_INFO) && !defined(CONFIG_ASSERT_NO_FILE_INFO)
|
||||||
__ASSERT_PRINT("ASSERTION FAIL [%s] @ %s:%d\n", \
|
#define __ASSERT_LOC(test) \
|
||||||
__ASSERT_COND_INFO(test), \
|
__ASSERT_PRINT("ASSERTION FAIL [%s] @ %s:%d\n", \
|
||||||
__ASSERT_FILE_INFO, \
|
Z_STRINGIFY(test), \
|
||||||
__ASSERT_LINE_INFO) \
|
__FILE__, __LINE__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_ASSERT_NO_COND_INFO) && !defined(CONFIG_ASSERT_NO_FILE_INFO)
|
||||||
|
#define __ASSERT_LOC(test) \
|
||||||
|
__ASSERT_PRINT("ASSERTION FAIL @ %s:%d\n", \
|
||||||
|
__FILE__, __LINE__)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(CONFIG_ASSERT_NO_COND_INFO) && defined(CONFIG_ASSERT_NO_FILE_INFO)
|
||||||
|
#define __ASSERT_LOC(test) \
|
||||||
|
__ASSERT_PRINT("ASSERTION FAIL [%s]\n", \
|
||||||
|
Z_STRINGIFY(test))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_ASSERT_NO_COND_INFO) && defined(CONFIG_ASSERT_NO_FILE_INFO)
|
||||||
|
#define __ASSERT_LOC(test) \
|
||||||
|
__ASSERT_PRINT("ASSERTION FAIL\n")
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __ASSERT_ON
|
#ifdef __ASSERT_ON
|
||||||
#if (__ASSERT_ON < 0) || (__ASSERT_ON > 2)
|
#if (__ASSERT_ON < 0) || (__ASSERT_ON > 2)
|
||||||
|
@ -65,7 +69,13 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ASSERT_NO_FILE_INFO
|
||||||
|
void assert_post_action(void);
|
||||||
|
#define __ASSERT_POST_ACTION() assert_post_action()
|
||||||
|
#else /* CONFIG_ASSERT_NO_FILE_INFO */
|
||||||
void assert_post_action(const char *file, unsigned int line);
|
void assert_post_action(const char *file, unsigned int line);
|
||||||
|
#define __ASSERT_POST_ACTION() assert_post_action(__FILE__, __LINE__)
|
||||||
|
#endif /* CONFIG_ASSERT_NO_FILE_INFO */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -75,8 +85,7 @@ void assert_post_action(const char *file, unsigned int line);
|
||||||
do { \
|
do { \
|
||||||
if (!(test)) { \
|
if (!(test)) { \
|
||||||
__ASSERT_LOC(test); \
|
__ASSERT_LOC(test); \
|
||||||
assert_post_action(__ASSERT_FILE_INFO, \
|
__ASSERT_POST_ACTION(); \
|
||||||
__ASSERT_LINE_INFO); \
|
|
||||||
} \
|
} \
|
||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
|
@ -85,8 +94,7 @@ void assert_post_action(const char *file, unsigned int line);
|
||||||
if (!(test)) { \
|
if (!(test)) { \
|
||||||
__ASSERT_LOC(test); \
|
__ASSERT_LOC(test); \
|
||||||
__ASSERT_MSG_INFO(fmt, ##__VA_ARGS__); \
|
__ASSERT_MSG_INFO(fmt, ##__VA_ARGS__); \
|
||||||
assert_post_action(__ASSERT_FILE_INFO, \
|
__ASSERT_POST_ACTION(); \
|
||||||
__ASSERT_LINE_INFO); \
|
|
||||||
} \
|
} \
|
||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,16 @@
|
||||||
*
|
*
|
||||||
* @return N/A
|
* @return N/A
|
||||||
*/
|
*/
|
||||||
|
#ifdef CONFIG_ASSERT_NO_FILE_INFO
|
||||||
|
__weak void assert_post_action(void)
|
||||||
|
#else
|
||||||
__weak void assert_post_action(const char *file, unsigned int line)
|
__weak void assert_post_action(const char *file, unsigned int line)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifndef CONFIG_ASSERT_NO_FILE_INFO
|
||||||
ARG_UNUSED(file);
|
ARG_UNUSED(file);
|
||||||
ARG_UNUSED(line);
|
ARG_UNUSED(line);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_USERSPACE
|
#ifdef CONFIG_USERSPACE
|
||||||
/* User threads aren't allowed to induce kernel panics; generate
|
/* User threads aren't allowed to induce kernel panics; generate
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue