mirror of
https://github.com/torvalds/linux
synced 2024-09-06 18:01:05 +00:00
Merge branch 'rework/misc-cleanups' into for-linus
This commit is contained in:
commit
86098bcdde
|
@ -3727,7 +3727,8 @@ late_initcall(printk_late_init);
|
|||
/* If @con is specified, only wait for that console. Otherwise wait for all. */
|
||||
static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress)
|
||||
{
|
||||
int remaining = timeout_ms;
|
||||
unsigned long timeout_jiffies = msecs_to_jiffies(timeout_ms);
|
||||
unsigned long remaining_jiffies = timeout_jiffies;
|
||||
struct console *c;
|
||||
u64 last_diff = 0;
|
||||
u64 printk_seq;
|
||||
|
@ -3744,6 +3745,9 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre
|
|||
console_unlock();
|
||||
|
||||
for (;;) {
|
||||
unsigned long begin_jiffies;
|
||||
unsigned long slept_jiffies;
|
||||
|
||||
diff = 0;
|
||||
|
||||
/*
|
||||
|
@ -3772,24 +3776,20 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre
|
|||
console_srcu_read_unlock(cookie);
|
||||
|
||||
if (diff != last_diff && reset_on_progress)
|
||||
remaining = timeout_ms;
|
||||
remaining_jiffies = timeout_jiffies;
|
||||
|
||||
console_unlock();
|
||||
|
||||
/* Note: @diff is 0 if there are no usable consoles. */
|
||||
if (diff == 0 || remaining == 0)
|
||||
if (diff == 0 || remaining_jiffies == 0)
|
||||
break;
|
||||
|
||||
if (remaining < 0) {
|
||||
/* no timeout limit */
|
||||
msleep(100);
|
||||
} else if (remaining < 100) {
|
||||
msleep(remaining);
|
||||
remaining = 0;
|
||||
} else {
|
||||
msleep(100);
|
||||
remaining -= 100;
|
||||
}
|
||||
/* msleep(1) might sleep much longer. Check time by jiffies. */
|
||||
begin_jiffies = jiffies;
|
||||
msleep(1);
|
||||
slept_jiffies = jiffies - begin_jiffies;
|
||||
|
||||
remaining_jiffies -= min(slept_jiffies, remaining_jiffies);
|
||||
|
||||
last_diff = diff;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue