mirror of https://github.com/thesofproject/sof.git
debugability: Protect against invalid param num in trace_event macro
Introduce STATIC_ASSERT macro for compile-time verifications. Signed-off-by: ArturX Kloniecki <arturx.kloniecki@linux.intel.com>
This commit is contained in:
parent
9b51e3e9ab
commit
f7079f5d9a
|
@ -48,6 +48,12 @@ struct sa;
|
|||
#define PP_NARG(...) (sizeof((unsigned int[]){0, ##__VA_ARGS__}) \
|
||||
/ sizeof(unsigned int) - 1)
|
||||
|
||||
/* compile-time assertion */
|
||||
#define STATIC_ASSERT(COND, MESSAGE) \
|
||||
__attribute__((unused)) \
|
||||
typedef char assertion_failed_##MESSAGE[(COND) ? 1 : -1]
|
||||
|
||||
|
||||
/* general firmware context */
|
||||
struct sof {
|
||||
/* init data */
|
||||
|
|
|
@ -227,25 +227,28 @@ typedef void(*log_func)();
|
|||
format \
|
||||
}
|
||||
|
||||
#define BASE_LOG(function_name, entry, ...) \
|
||||
{ \
|
||||
log_func log_function = NULL; \
|
||||
if (PP_NARG(__VA_ARGS__) == 0) { \
|
||||
log_function = (log_func)&function_name##0; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 1) { \
|
||||
log_function = (log_func)&function_name##1; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 2) { \
|
||||
log_function = (log_func)&function_name##2; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 3) { \
|
||||
log_function = (log_func)&function_name##3; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 4) { \
|
||||
log_function = (log_func)&function_name##4; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} \
|
||||
#define BASE_LOG(function_name, entry, ...) \
|
||||
{ \
|
||||
log_func log_function = NULL; \
|
||||
if (PP_NARG(__VA_ARGS__) == 0) { \
|
||||
log_function = (log_func)&function_name##0; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 1) { \
|
||||
log_function = (log_func)&function_name##1; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 2) { \
|
||||
log_function = (log_func)&function_name##2; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 3) { \
|
||||
log_function = (log_func)&function_name##3; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else if (PP_NARG(__VA_ARGS__) == 4) { \
|
||||
log_function = (log_func)&function_name##4; \
|
||||
log_function(entry, ##__VA_ARGS__); \
|
||||
} else { \
|
||||
STATIC_ASSERT(PP_NARG(__VA_ARGS__) <= 4, \
|
||||
unsupported_amount_of_params_in_trace_event); \
|
||||
} \
|
||||
}
|
||||
|
||||
#define __log_message(func_name, lvl, comp_id, format, ...) \
|
||||
|
|
Loading…
Reference in New Issue