]>
Commit | Line | Data |
---|---|---|
717115e1 DY |
1 | #ifndef _LINUX_RATELIMIT_H |
2 | #define _LINUX_RATELIMIT_H | |
979f693d | 3 | |
717115e1 | 4 | #include <linux/param.h> |
979f693d | 5 | #include <linux/spinlock_types.h> |
717115e1 | 6 | |
979f693d IM |
7 | #define DEFAULT_RATELIMIT_INTERVAL (5 * HZ) |
8 | #define DEFAULT_RATELIMIT_BURST 10 | |
717115e1 DY |
9 | |
10 | struct ratelimit_state { | |
979f693d IM |
11 | spinlock_t lock; /* protect the state */ |
12 | ||
13 | int interval; | |
14 | int burst; | |
15 | int printed; | |
16 | int missed; | |
17 | unsigned long begin; | |
717115e1 DY |
18 | }; |
19 | ||
979f693d IM |
20 | #define DEFINE_RATELIMIT_STATE(name, interval_init, burst_init) \ |
21 | \ | |
22 | struct ratelimit_state name = { \ | |
23 | .lock = __SPIN_LOCK_UNLOCKED(name.lock), \ | |
24 | .interval = interval_init, \ | |
25 | .burst = burst_init, \ | |
26 | } | |
717115e1 | 27 | |
5c828713 CB |
28 | extern int ___ratelimit(struct ratelimit_state *rs, const char *func); |
29 | #define __ratelimit(state) ___ratelimit(state, __func__) | |
979f693d IM |
30 | |
31 | #endif /* _LINUX_RATELIMIT_H */ |