kvmtool: Add WARN_ONCE macro
Add a macro to enable to print a warning only once. This is
beneficial for cases where a warning could be helpful for
debugging, but still log pollution is preferred not to happen.
Reviewed-by: Alexandru Elisei <alexandru.elisei@arm.com>
Signed-off-by: Martin Radev <martin.b.radev@gmail.com>
Link: https://lore.kernel.org/r/20220509203940.754644-2-martin.b.radev@gmail.com
Signed-off-by: Will Deacon <will@kernel.org>
diff --git a/include/kvm/util.h b/include/kvm/util.h
index d76568a..b494548 100644
--- a/include/kvm/util.h
+++ b/include/kvm/util.h
@@ -82,6 +82,16 @@
__ret_warn_on; \
})
+#define WARN_ONCE(condition, format, args...) ({ \
+ static int __warned; \
+ int __ret_warn_on = !!(condition); \
+ if (!__warned && __ret_warn_on) { \
+ __warned = 1; \
+ pr_warning(format, args); \
+ } \
+ __ret_warn_on; \
+})
+
#define MSECS_TO_USECS(s) ((s) * 1000)
/* Millisecond sleep */