/* * ratelimit.c - Do something with rate limit. * * Isolated from kernel/printk.c by Dave Young <hidave.darkstar@gmail.com> * * 2008-05-01 rewrite the function and use a ratelimit_state data struct as * parameter. Now every user can use their own standalone ratelimit_state. * * This file is released under the GPLv2. */ #include <linux/ratelimit.h> #include <linux/jiffies.h> #include <linux/export.h> /* * __ratelimit - rate limiting * @rs: ratelimit_state data * @func: name of calling function * * This enforces a rate limit: not more than @rs->burst callbacks * in every @rs->interval * * RETURNS: * 0 means callbacks will be suppressed. * 1 means go ahead and do it. */
int ___ratelimit(struct ratelimit_state *rs, const char *func) { unsigned long flags; int ret; if (!rs->interval) return 1; /* * If we contend on this state's lock then almost * by definition we are too busy to print a message, * in addition to the one that will be printed by * the entity that is holding the lock already: */ if (!raw_spin_trylock_irqsave(&rs->lock, flags)) return 0; if (!rs->begin) rs->begin = jiffies; if (time_is_before_jiffies(rs->begin + rs->interval)) { if (rs->missed) printk(KERN_WARNING "%s: %d callbacks suppressed\n", func, rs->missed); rs->begin = jiffies; rs->printed = 0; rs->missed = 0; } if (rs->burst && rs->burst > rs->printed) { rs->printed++; ret = 1; } else { rs->missed++; ret = 0; } raw_spin_unlock_irqrestore(&rs->lock, flags); return ret; }Contributors
Person | Tokens | Prop | Commits | CommitProp | |
dave young | dave young | 117 | 71.78% | 2 | 22.22% |
ingo molnar | ingo molnar | 31 | 19.02% | 2 | 22.22% |
christian borntraeger | christian borntraeger | 7 | 4.29% | 1 | 11.11% |
alexey dobriyan | alexey dobriyan | 4 | 2.45% | 1 | 11.11% |
thomas gleixner | thomas gleixner | 2 | 1.23% | 1 | 11.11% |
jaewon kim | jaewon kim | 1 | 0.61% | 1 | 11.11% |
yong zhang | yong zhang | 1 | 0.61% | 1 | 11.11% |
Total | 163 | 100.00% | 9 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
dave young | dave young | 128 | 71.51% | 2 | 16.67% |
ingo molnar | ingo molnar | 33 | 18.44% | 3 | 25.00% |
christian borntraeger | christian borntraeger | 8 | 4.47% | 1 | 8.33% |
alexey dobriyan | alexey dobriyan | 4 | 2.23% | 1 | 8.33% |
thomas gleixner | thomas gleixner | 2 | 1.12% | 1 | 8.33% |
yong zhang | yong zhang | 2 | 1.12% | 2 | 16.67% |
jaewon kim | jaewon kim | 1 | 0.56% | 1 | 8.33% |
paul gortmaker | paul gortmaker | 1 | 0.56% | 1 | 8.33% |
Total | 179 | 100.00% | 12 | 100.00% |