mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-05 21:35:04 +08:00
0bc8fb4dda
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>
31 lines
658 B
C
31 lines
658 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __UM_DELAY_H
|
|
#define __UM_DELAY_H
|
|
#include <asm-generic/delay.h>
|
|
#include <linux/time-internal.h>
|
|
|
|
static inline void um_ndelay(unsigned long nsecs)
|
|
{
|
|
if (time_travel_mode == TT_MODE_INFCPU ||
|
|
time_travel_mode == TT_MODE_EXTERNAL) {
|
|
time_travel_ndelay(nsecs);
|
|
return;
|
|
}
|
|
ndelay(nsecs);
|
|
}
|
|
#undef ndelay
|
|
#define ndelay um_ndelay
|
|
|
|
static inline void um_udelay(unsigned long usecs)
|
|
{
|
|
if (time_travel_mode == TT_MODE_INFCPU ||
|
|
time_travel_mode == TT_MODE_EXTERNAL) {
|
|
time_travel_ndelay(1000 * usecs);
|
|
return;
|
|
}
|
|
udelay(usecs);
|
|
}
|
|
#undef udelay
|
|
#define udelay um_udelay
|
|
#endif /* __UM_DELAY_H */
|