diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2024-01-16 17:00:02 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2024-01-16 17:17:23 -0500 |
commit | b5fd066153c40a70a29caa1ea7987723ab687763 (patch) | |
tree | 6d43a8b0a90d549a54c65565ac96c92b3e84b594 /c_src/include/linux/ratelimit.h | |
parent | 06ff8b55b70fda44d91b31b5511fafd1680a8934 (diff) |
Move c_src dirs back to toplevel
We just wanted c sourcefiles out of the top level, not c source
directories.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src/include/linux/ratelimit.h')
-rw-r--r-- | c_src/include/linux/ratelimit.h | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/c_src/include/linux/ratelimit.h b/c_src/include/linux/ratelimit.h deleted file mode 100644 index 680181d2..00000000 --- a/c_src/include/linux/ratelimit.h +++ /dev/null @@ -1,109 +0,0 @@ -#ifndef _LINUX_RATELIMIT_H -#define _LINUX_RATELIMIT_H - -#include <linux/printk.h> -#include <linux/sched.h> -#include <linux/spinlock.h> - -#define DEFAULT_RATELIMIT_INTERVAL (5 * HZ) -#define DEFAULT_RATELIMIT_BURST 10 - -/* issue num suppressed message on exit */ -#define RATELIMIT_MSG_ON_RELEASE 1 - -struct ratelimit_state { - raw_spinlock_t lock; /* protect the state */ - - int interval; - int burst; - int printed; - int missed; - unsigned long begin; - unsigned long flags; -}; - -#define RATELIMIT_STATE_INIT(name, interval_init, burst_init) { \ - .lock = __RAW_SPIN_LOCK_UNLOCKED(name.lock), \ - .interval = interval_init, \ - .burst = burst_init, \ - } - -#define RATELIMIT_STATE_INIT_DISABLED \ - RATELIMIT_STATE_INIT(ratelimit_state, 0, DEFAULT_RATELIMIT_BURST) - -#define DEFINE_RATELIMIT_STATE(name, interval_init, burst_init) \ - \ - struct ratelimit_state name = \ - RATELIMIT_STATE_INIT(name, interval_init, burst_init) \ - -static inline void ratelimit_state_init(struct ratelimit_state *rs, - int interval, int burst) -{ - memset(rs, 0, sizeof(*rs)); - - raw_spin_lock_init(&rs->lock); - rs->interval = interval; - rs->burst = burst; -} - -static inline void ratelimit_default_init(struct ratelimit_state *rs) -{ - return ratelimit_state_init(rs, DEFAULT_RATELIMIT_INTERVAL, - DEFAULT_RATELIMIT_BURST); -} - -static inline void ratelimit_state_exit(struct ratelimit_state *rs) -{ - if (!(rs->flags & RATELIMIT_MSG_ON_RELEASE)) - return; - - if (rs->missed) { - pr_warn("%s: %d output lines suppressed due to ratelimiting\n", - current->comm, rs->missed); - rs->missed = 0; - } -} - -static inline void -ratelimit_set_flags(struct ratelimit_state *rs, unsigned long flags) -{ - rs->flags = flags; -} - -extern struct ratelimit_state printk_ratelimit_state; - -extern int ___ratelimit(struct ratelimit_state *rs, const char *func); -#define __ratelimit(state) ___ratelimit(state, __func__) - -#ifdef CONFIG_PRINTK - -#define WARN_ON_RATELIMIT(condition, state) \ - WARN_ON((condition) && __ratelimit(state)) - -#define WARN_RATELIMIT(condition, format, ...) \ -({ \ - static DEFINE_RATELIMIT_STATE(_rs, \ - DEFAULT_RATELIMIT_INTERVAL, \ - DEFAULT_RATELIMIT_BURST); \ - int rtn = !!(condition); \ - \ - if (unlikely(rtn && __ratelimit(&_rs))) \ - WARN(rtn, format, ##__VA_ARGS__); \ - \ - rtn; \ -}) - -#else - -#define WARN_ON_RATELIMIT(condition, state) \ - WARN_ON(condition) - -#define WARN_RATELIMIT(condition, format, ...) \ -({ \ - int rtn = WARN(condition, format, ##__VA_ARGS__); \ - rtn; \ -}) - -#endif - -#endif /* _LINUX_RATELIMIT_H */ |