aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Perches <joe@perches.com>2011-05-21 03:48:39 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-23 17:37:43 -0400
commitb3eec79b0776e5340a3db75b34953977c7e5086e (patch)
tree33f6c56a27e8503fa2881632f35c80618a00a888
parent8efa885406359af300d46910642b50ca82c0fe47 (diff)
bug.h: Add WARN_RATELIMIT
Add a generic mechanism to ratelimit WARN(foo, fmt, ...) messages using a hidden per call site static struct ratelimit_state. Also add an __WARN_RATELIMIT variant to be able to use a specific struct ratelimit_state. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/asm-generic/bug.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index e5a3f5880001..12b250cdda81 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -165,6 +165,22 @@ extern void warn_slowpath_null(const char *file, const int line);
165#define WARN_ON_RATELIMIT(condition, state) \ 165#define WARN_ON_RATELIMIT(condition, state) \
166 WARN_ON((condition) && __ratelimit(state)) 166 WARN_ON((condition) && __ratelimit(state))
167 167
168#define __WARN_RATELIMIT(condition, state, format...) \
169({ \
170 int rtn = 0; \
171 if (unlikely(__ratelimit(state))) \
172 rtn = WARN(condition, format); \
173 rtn; \
174})
175
176#define WARN_RATELIMIT(condition, format...) \
177({ \
178 static DEFINE_RATELIMIT_STATE(_rs, \
179 DEFAULT_RATELIMIT_INTERVAL, \
180 DEFAULT_RATELIMIT_BURST); \
181 __WARN_RATELIMIT(condition, &_rs, format); \
182})
183
168/* 184/*
169 * WARN_ON_SMP() is for cases that the warning is either 185 * WARN_ON_SMP() is for cases that the warning is either
170 * meaningless for !SMP or may even cause failures. 186 * meaningless for !SMP or may even cause failures.