• Johannes Berg's avatar
    um: time-travel: Rewrite as an event scheduler · 4b786e24
    Johannes Berg authored
    Instead of tracking all the various timer configurations,
    modify the time-travel mode to have an event scheduler and
    use a timer event on the scheduler to handle the different
    timer configurations.
    
    This doesn't change the function right now, but it prepares
    the code for having different kinds of events in the future
    (i.e. interrupts coming from other devices that are part of
    co-simulation.)
    
    While at it, also move time_travel_sleep() to time.c to
    reduce the externally visible API surface.
    
    Also, we really should mark time-travel as incompatible with
    SMP, even if UML doesn't support SMP yet.
    
    Finally, I noticed a bug while developing this - if we move
    time forward due to consuming time while reading the clock,
    we might move across the next event and that would cause us
    to go backward in time when we then handle that event. Fix
    that by invoking the whole event machine in this case, but
    in order to simplify this, make reading the clock only cost
    something when interrupts are not disabled. Otherwise, we'd
    have to hook into the interrupt delivery machinery etc. and
    that's somewhat intrusive.
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    4b786e24
process.c 8.78 KB