printk: Add printk_deferred_once
Two of the three prink_deferred uses are really printk_once style uses, so add a printk_deferred_once macro to simplify those call sites. Signed-off-by: John Stultz <john.stultz@linaro.org> Reviewed-by: Steven Rostedt <rostedt@goodmis.org> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Jiri Bohac <jbohac@suse.cz> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
aac74dc495
commit
c224815dac
|
@ -266,9 +266,20 @@ extern asmlinkage void dump_stack(void) __cold;
|
||||||
printk(fmt, ##__VA_ARGS__); \
|
printk(fmt, ##__VA_ARGS__); \
|
||||||
} \
|
} \
|
||||||
})
|
})
|
||||||
|
#define printk_deferred_once(fmt, ...) \
|
||||||
|
({ \
|
||||||
|
static bool __print_once __read_mostly; \
|
||||||
|
\
|
||||||
|
if (!__print_once) { \
|
||||||
|
__print_once = true; \
|
||||||
|
printk_deferred(fmt, ##__VA_ARGS__); \
|
||||||
|
} \
|
||||||
|
})
|
||||||
#else
|
#else
|
||||||
#define printk_once(fmt, ...) \
|
#define printk_once(fmt, ...) \
|
||||||
no_printk(fmt, ##__VA_ARGS__)
|
no_printk(fmt, ##__VA_ARGS__)
|
||||||
|
#define printk_deferred_once(fmt, ...) \
|
||||||
|
no_printk(fmt, ##__VA_ARGS__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define pr_emerg_once(fmt, ...) \
|
#define pr_emerg_once(fmt, ...) \
|
||||||
|
|
|
@ -348,12 +348,7 @@ static void replenish_dl_entity(struct sched_dl_entity *dl_se,
|
||||||
* entity.
|
* entity.
|
||||||
*/
|
*/
|
||||||
if (dl_time_before(dl_se->deadline, rq_clock(rq))) {
|
if (dl_time_before(dl_se->deadline, rq_clock(rq))) {
|
||||||
static bool lag_once = false;
|
printk_deferred_once("sched: DL replenish lagged to much\n");
|
||||||
|
|
||||||
if (!lag_once) {
|
|
||||||
lag_once = true;
|
|
||||||
printk_deferred("sched: DL replenish lagged to much\n");
|
|
||||||
}
|
|
||||||
dl_se->deadline = rq_clock(rq) + pi_se->dl_deadline;
|
dl_se->deadline = rq_clock(rq) + pi_se->dl_deadline;
|
||||||
dl_se->runtime = pi_se->dl_runtime;
|
dl_se->runtime = pi_se->dl_runtime;
|
||||||
}
|
}
|
||||||
|
|
|
@ -890,14 +890,8 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
|
||||||
* but accrue some time due to boosting.
|
* but accrue some time due to boosting.
|
||||||
*/
|
*/
|
||||||
if (likely(rt_b->rt_runtime)) {
|
if (likely(rt_b->rt_runtime)) {
|
||||||
static bool once = false;
|
|
||||||
|
|
||||||
rt_rq->rt_throttled = 1;
|
rt_rq->rt_throttled = 1;
|
||||||
|
printk_deferred_once("sched: RT throttling activated\n");
|
||||||
if (!once) {
|
|
||||||
once = true;
|
|
||||||
printk_deferred("sched: RT throttling activated\n");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* In case we did anyway, make it go away,
|
* In case we did anyway, make it go away,
|
||||||
|
|
Loading…
Reference in New Issue