cregit-Linux how code gets into the kernel

Release 4.7 include/linux/ratelimit.h

Directory: include/linux
#ifndef _LINUX_RATELIMIT_H

#define _LINUX_RATELIMIT_H

#include <linux/param.h>
#include <linux/spinlock.h>


#define DEFAULT_RATELIMIT_INTERVAL	(5 * HZ)

#define DEFAULT_RATELIMIT_BURST		10


struct ratelimit_state {
	
raw_spinlock_t	lock;		/* protect the state */

	
int		interval;
	
int		burst;
	
int		printed;
	
int		missed;
	
unsigned long	begin;
};


#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)
{
	raw_spin_lock_init(&rs->lock);
	rs->interval = interval;
	rs->burst = burst;
	rs->printed = 0;
	rs->missed = 0;
	rs->begin = 0;
}

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 */

Overall Contributors

PersonTokensPropCommitsCommitProp
dave youngdave young5728.50%111.11%
david s. millerdavid s. miller4723.50%111.11%
hirofumi ogawahirofumi ogawa4422.00%111.11%
dmitriy monakhovdmitriy monakhov199.50%111.11%
christian borntraegerchristian borntraeger136.50%111.11%
ingo molnaringo molnar94.50%111.11%
namhyung kimnamhyung kim52.50%111.11%
markus trippelsdorfmarkus trippelsdorf42.00%111.11%
thomas gleixnerthomas gleixner21.00%111.11%
Total200100.00%9100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}