Merge tag 'for-linus-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml
Pull UML updates from Richard Weinberger: - A new timer mode, time travel, for testing with UML - Many bugixes/improvements for the serial line driver - Various bugfixes * tag 'for-linus-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml: um: fix build without CONFIG_UML_TIME_TRAVEL_SUPPORT um: Fix kcov crash during startup um: configs: Remove useless UEVENT_HELPER_PATH um: Support time travel mode um: Pass nsecs to os timer functions um: Remove drivers/ssl.h um: Don't garbage collect in deactivate_all_fds() um: Silence lockdep complaint about mmap_sem um: Remove locking in deactivate_all_fds() um: Timer code cleanup um: fix os_timer_one_shot() um: Fix IRQ controller regression on console read
This commit is contained in:
@@ -52,7 +52,7 @@ static inline void activate_mm(struct mm_struct *old, struct mm_struct *new)
|
||||
* when the new ->mm is used for the first time.
|
||||
*/
|
||||
__switch_mm(&new->context.id);
|
||||
down_write(&new->mmap_sem);
|
||||
down_write_nested(&new->mmap_sem, 1);
|
||||
uml_setup_stubs(new);
|
||||
up_write(&new->mmap_sem);
|
||||
}
|
||||
|
@@ -250,15 +250,13 @@ extern void os_warn(const char *fmt, ...)
|
||||
|
||||
/* time.c */
|
||||
extern void os_idle_sleep(unsigned long long nsecs);
|
||||
extern int os_timer_create(void* timer);
|
||||
extern int os_timer_set_interval(void* timer, void* its);
|
||||
extern int os_timer_one_shot(int ticks);
|
||||
extern long long os_timer_disable(void);
|
||||
extern long os_timer_remain(void* timer);
|
||||
extern int os_timer_create(void);
|
||||
extern int os_timer_set_interval(unsigned long long nsecs);
|
||||
extern int os_timer_one_shot(unsigned long long nsecs);
|
||||
extern void os_timer_disable(void);
|
||||
extern void uml_idle_timer(void);
|
||||
extern long long os_persistent_clock_emulation(void);
|
||||
extern long long os_nsecs(void);
|
||||
extern long long os_vnsecs(void);
|
||||
|
||||
/* skas/mem.c */
|
||||
extern long run_syscall_stub(struct mm_id * mm_idp,
|
||||
|
@@ -10,4 +10,52 @@
|
||||
#define TIMER_MULTIPLIER 256
|
||||
#define TIMER_MIN_DELTA 500
|
||||
|
||||
enum time_travel_mode {
|
||||
TT_MODE_OFF,
|
||||
TT_MODE_BASIC,
|
||||
TT_MODE_INFCPU,
|
||||
};
|
||||
|
||||
enum time_travel_timer_mode {
|
||||
TT_TMR_DISABLED,
|
||||
TT_TMR_ONESHOT,
|
||||
TT_TMR_PERIODIC,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_UML_TIME_TRAVEL_SUPPORT
|
||||
extern enum time_travel_mode time_travel_mode;
|
||||
extern unsigned long long time_travel_time;
|
||||
extern enum time_travel_timer_mode time_travel_timer_mode;
|
||||
extern unsigned long long time_travel_timer_expiry;
|
||||
extern unsigned long long time_travel_timer_interval;
|
||||
|
||||
static inline void time_travel_set_time(unsigned long long ns)
|
||||
{
|
||||
time_travel_time = ns;
|
||||
}
|
||||
|
||||
static inline void time_travel_set_timer(enum time_travel_timer_mode mode,
|
||||
unsigned long long expiry)
|
||||
{
|
||||
time_travel_timer_mode = mode;
|
||||
time_travel_timer_expiry = expiry;
|
||||
}
|
||||
#else
|
||||
#define time_travel_mode TT_MODE_OFF
|
||||
#define time_travel_time 0
|
||||
#define time_travel_timer_expiry 0
|
||||
#define time_travel_timer_interval 0
|
||||
|
||||
static inline void time_travel_set_time(unsigned long long ns)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void time_travel_set_timer(enum time_travel_timer_mode mode,
|
||||
unsigned long long expiry)
|
||||
{
|
||||
}
|
||||
|
||||
#define time_travel_timer_mode TT_TMR_DISABLED
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user