diff --git a/src/include/sof/sof.h b/src/include/sof/sof.h index 22b7a1d74..404742097 100644 --- a/src/include/sof/sof.h +++ b/src/include/sof/sof.h @@ -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 */ diff --git a/src/include/sof/trace.h b/src/include/sof/trace.h index 8aacabf8e..4ce04a8b9 100644 --- a/src/include/sof/trace.h +++ b/src/include/sof/trace.h @@ -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, ...) \