[PATCH] drm: add DRM_ERROR_RATELIMITED
Rob Clark
robdclark at gmail.com
Thu Nov 21 11:29:51 PST 2013
For error traces in situations that can run away, it is nice to have a
rate-limited version of DRM_ERROR() to avoid massing log flooding.
Signed-off-by: Rob Clark <robdclark at gmail.com>
---
include/drm/drmP.h | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 0a372b2..dd6699e 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -56,6 +56,7 @@
#include <linux/mutex.h>
#include <linux/io.h>
#include <linux/slab.h>
+#include <linux/ratelimit.h>
#if defined(__alpha__) || defined(__powerpc__)
#include <asm/pgtable.h> /* For pte_wrprotect */
#endif
@@ -180,6 +181,22 @@ int drm_err(const char *func, const char *format, ...);
#define DRM_ERROR(fmt, ...) \
drm_err(__func__, fmt, ##__VA_ARGS__)
+/**
+ * Rate limited error output. Like DRM_ERROR() but won't flood the log.
+ *
+ * \param fmt printf() like format string.
+ * \param arg arguments
+ */
+#define DRM_ERROR_RATELIMITED(fmt, ...) \
+({ \
+ static DEFINE_RATELIMIT_STATE(_rs, \
+ DEFAULT_RATELIMIT_INTERVAL, \
+ DEFAULT_RATELIMIT_BURST); \
+ \
+ if (__ratelimit(&_rs)) \
+ drm_err(__func__, fmt, ##__VA_ARGS__); \
+})
+
#define DRM_INFO(fmt, ...) \
printk(KERN_INFO "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
--
1.8.4.2
More information about the dri-devel
mailing list