| From ac8da642f31961c5dbc7b6cf4053fc9c78720b05 Mon Sep 17 00:00:00 2001 |
| From: Joe Perches <joe@perches.com> |
| Date: Sat, 21 May 2011 07:48:39 +0000 |
| Subject: bug.h: Add WARN_RATELIMIT |
| |
| |
| From: Joe Perches <joe@perches.com> |
| |
| [ Upstream commit b3eec79b0776e5340a3db75b34953977c7e5086e ] |
| |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| include/asm-generic/bug.h | 16 ++++++++++++++++ |
| 1 file changed, 16 insertions(+) |
| |
| --- a/include/asm-generic/bug.h |
| +++ b/include/asm-generic/bug.h |
| @@ -50,6 +50,22 @@ struct bug_entry { |
| #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while(0) |
| #endif |
| |
| +#define __WARN_RATELIMIT(condition, state, format...) \ |
| +({ \ |
| + int rtn = 0; \ |
| + if (unlikely(__ratelimit(state))) \ |
| + rtn = WARN(condition, format); \ |
| + rtn; \ |
| +}) |
| + |
| +#define WARN_RATELIMIT(condition, format...) \ |
| +({ \ |
| + static DEFINE_RATELIMIT_STATE(_rs, \ |
| + DEFAULT_RATELIMIT_INTERVAL, \ |
| + DEFAULT_RATELIMIT_BURST); \ |
| + __WARN_RATELIMIT(condition, &_rs, format); \ |
| +}) |
| + |
| /* |
| * WARN(), WARN_ON(), WARN_ON_ONCE, and so on can be used to report |
| * significant issues that need prompt attention if they should ever |