Logging of function return-values is used very frequently in U-Boot now. Add a few helper macros to make it less verbose to use.
It turns out that the log_ret() variants are not so useful, since it is not obviously where the error is coming from. So only the log_msg_ret() variants are worthy of these macros. Signed-off-by: Simon Glass <s...@chromium.org> --- include/log.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/include/log.h b/include/log.h index 4f6d6a2c2cf..bdda7af570c 100644 --- a/include/log.h +++ b/include/log.h @@ -380,6 +380,32 @@ void __assert_fail(const char *assertion, const char *file, unsigned int line, #define log_msg_retz(_msg, _ret) ((void)(_msg), _ret) #endif +/* + * LOGR() - helper macro for calling a function and logging error returns + * + * Logs if the function returns a negative value + * + * Usage: LOGR("abc", my_function(...)); + */ +#define LOGR(_msg, _expr) do { \ + int _ret = _expr; \ + if (_ret < 0) \ + return log_msg_ret(_msg, _ret); \ + } while (0) + +/* + * LOGZ() - helper macro for calling a function and logging error returns + * + * Logs if the function returns a non-zero value + * + * Usage: LOGZ("abc", my_function(...)); + */ +#define LOGZ(_msg, _expr) do { \ + int _ret = _expr; \ + if (_ret) \ + return log_msg_retz(_msg, _ret); \ + } while (0) + /** * enum log_rec_flags - Flags for a log record */ enum log_rec_flags { /** @LOGRECF_FORCE_DEBUG: Force output of debug record */ -- 2.43.0