lkml.org 
[lkml]   [2011]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/16] time: Move common updates to a function
    Date
    From: Thomas Gleixner <tglx@linutronix.de>

    CC: Thomas Gleixner <tglx@linutronix.de>
    CC: Eric Dumazet <eric.dumazet@gmail.com>
    CC: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    ---
    kernel/time/timekeeping.c | 39 +++++++++++++++++----------------------
    1 files changed, 17 insertions(+), 22 deletions(-)

    diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
    index b632678..9416be0 100644
    --- a/kernel/time/timekeeping.c
    +++ b/kernel/time/timekeeping.c
    @@ -172,17 +172,26 @@ static inline s64 timekeeping_get_ns_raw(void)
    return clocksource_cyc2ns(cycle_delta, clock->mult, clock->shift);
    }

    +/* must hold write on timekeeper.lock */
    +static void timekeeping_update(bool clearntp)
    +{
    + if (clearntp) {
    + timekeeper.ntp_error = 0;
    + ntp_clear();
    + }
    + update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    + timekeeper.clock, timekeeper.mult);
    +}
    +
    +
    void timekeeping_leap_insert(int leapsecond)
    {
    unsigned long flags;

    write_seqlock_irqsave(&timekeeper.lock, flags);
    -
    timekeeper.xtime.tv_sec += leapsecond;
    timekeeper.wall_to_monotonic.tv_sec -= leapsecond;
    - update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    - timekeeper.clock, timekeeper.mult);
    -
    + timekeeping_update(false);
    write_sequnlock_irqrestore(&timekeeper.lock, flags);

    }
    @@ -382,12 +391,7 @@ int do_settimeofday(const struct timespec *tv)
    timespec_sub(timekeeper.wall_to_monotonic, ts_delta);

    timekeeper.xtime = *tv;
    -
    - timekeeper.ntp_error = 0;
    - ntp_clear();
    -
    - update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    - timekeeper.clock, timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&timekeeper.lock, flags);

    @@ -421,11 +425,7 @@ int timekeeping_inject_offset(struct timespec *ts)
    timekeeper.wall_to_monotonic =
    timespec_sub(timekeeper.wall_to_monotonic, *ts);

    - timekeeper.ntp_error = 0;
    - ntp_clear();
    -
    - update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    - timekeeper.clock, timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&timekeeper.lock, flags);

    @@ -664,10 +664,7 @@ void timekeeping_inject_sleeptime(struct timespec *delta)

    __timekeeping_inject_sleeptime(delta);

    - timekeeper.ntp_error = 0;
    - ntp_clear();
    - update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    - timekeeper.clock, timekeeper.mult);
    + timekeeping_update(true);

    write_sequnlock_irqrestore(&timekeeper.lock, flags);

    @@ -993,9 +990,7 @@ static void update_wall_time(void)
    second_overflow();
    }

    - /* check to see if there is a new clocksource to use */
    - update_vsyscall(&timekeeper.xtime, &timekeeper.wall_to_monotonic,
    - timekeeper.clock, timekeeper.mult);
    + timekeeping_update(false);

    out:
    write_sequnlock_irqrestore(&timekeeper.lock, flags);
    --
    1.7.3.2.146.gca209


    \
     
     \ /
      Last update: 2011-11-15 05:09    [W:0.027 / U:0.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site