um: Implement ndelay/udelay in time-travel mode

In external or inf-cpu time-travel mode, ndelay/udelay currently
just waste CPU time since the simulation time doesn't advance.
Implement them properly in this case.

Note that the "if (time_travel_mode == ...)" parts compile out
if CONFIG_UML_TIME_TRAVEL_SUPPORT isn't set, time_travel_mode is
defined to TT_MODE_OFF in that case.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
Johannes Berg
2020-02-13 14:26:48 +01:00
committed by Richard Weinberger
parent 88ce642492
commit 0bc8fb4dda
4 changed files with 42 additions and 1 deletions

View File

@@ -374,6 +374,12 @@ static void time_travel_update_time(unsigned long long next, bool idle)
time_travel_del_event(&ne);
}
void time_travel_ndelay(unsigned long nsec)
{
time_travel_update_time(time_travel_time + nsec, false);
}
EXPORT_SYMBOL(time_travel_ndelay);
void time_travel_add_irq_event(struct time_travel_event *e)
{
BUG_ON(time_travel_mode != TT_MODE_EXTERNAL);