aboutsummaryrefslogtreecommitdiff
path: root/include/qemu/error-report.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/qemu/error-report.h')
-rw-r--r--include/qemu/error-report.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h
index e1c8ae1a52..72fab2b031 100644
--- a/include/qemu/error-report.h
+++ b/include/qemu/error-report.h
@@ -44,6 +44,38 @@ void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
void warn_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
void info_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
+/*
+ * Similar to error_report(), except it prints the message just once.
+ * Return true when it prints, false otherwise.
+ */
+#define error_report_once(fmt, ...) \
+ ({ \
+ static bool print_once_; \
+ bool ret_print_once_ = !print_once_; \
+ \
+ if (!print_once_) { \
+ print_once_ = true; \
+ error_report(fmt, ##__VA_ARGS__); \
+ } \
+ unlikely(ret_print_once_); \
+ })
+
+/*
+ * Similar to warn_report(), except it prints the message just once.
+ * Return true when it prints, false otherwise.
+ */
+#define warn_report_once(fmt, ...) \
+ ({ \
+ static bool print_once_; \
+ bool ret_print_once_ = !print_once_; \
+ \
+ if (!print_once_) { \
+ print_once_ = true; \
+ warn_report(fmt, ##__VA_ARGS__); \
+ } \
+ unlikely(ret_print_once_); \
+ })
+
const char *error_get_progname(void);
extern bool enable_timestamp_msg;