linux/include/linux/ratelimit.h
<<
>>
Prefs
   1#ifndef _LINUX_RATELIMIT_H
   2#define _LINUX_RATELIMIT_H
   3
   4#include <linux/param.h>
   5#include <linux/spinlock.h>
   6
   7#define DEFAULT_RATELIMIT_INTERVAL      (5 * HZ)
   8#define DEFAULT_RATELIMIT_BURST         10
   9
  10struct ratelimit_state {
  11        spinlock_t      lock;           /* protect the state */
  12
  13        int             interval;
  14        int             burst;
  15        int             printed;
  16        int             missed;
  17        unsigned long   begin;
  18};
  19
  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        }
  27
  28static inline void ratelimit_state_init(struct ratelimit_state *rs,
  29                                        int interval, int burst)
  30{
  31        spin_lock_init(&rs->lock);
  32        rs->interval = interval;
  33        rs->burst = burst;
  34        rs->printed = 0;
  35        rs->missed = 0;
  36        rs->begin = 0;
  37}
  38
  39extern int ___ratelimit(struct ratelimit_state *rs, const char *func);
  40#define __ratelimit(state) ___ratelimit(state, __func__)
  41
  42#endif /* _LINUX_RATELIMIT_H */
  43
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.