lkml.org 
[lkml]   [2011]   [Jan]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    SubjectRe: [PATCH V8 02/13] ntp: add ADJ_SETOFFSET mode bit
    On Sat, Jan 1, 2011 at 4:12 AM, Richard Cochran
    <richardcochran@gmail.com> wrote:
    > +#define ADJ_SETOFFSET          0x0040  /* add 'time' to current time */

    As you know, it conflicts with MOD_PPSMAX. And also, it is logically
    the same as ADJ_OFFSET, unless the kernel PLL is enabled explicitly.

    So here's my simple solution:

    ---
    diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c
    index c631168..d492887 100644
    --- a/kernel/time/ntp.c
    +++ b/kernel/time/ntp.c
    @@ -119,14 +119,21 @@
    return div_s64(offset64 << (NTP_SCALE_SHIFT - SHIFT_FLL), secs);
    }

    -static void ntp_update_offset(long offset)
    +static void ntp_update_offset(long offset, struct timespec *ts)
    {
    s64 freq_adj;
    s64 offset64;
    long secs;

    - if (!(time_status & STA_PLL))
    + if (!(time_status & STA_PLL)) {
    + offset64 = offset;
    + if (!(time_status & STA_NANO))
    + offset64 *= NSEC_PER_USEC;
    +
    + set_normalized_timespec(ts, ts->tv_sec, offset64 + ts->tv_nsec);
    +
    return;
    + }

    if (!(time_status & STA_NANO))
    offset *= NSEC_PER_USEC;
    @@ -430,7 +437,7 @@
    time_tai = txc->constant;

    if (txc->modes & ADJ_OFFSET)
    - ntp_update_offset(txc->offset);
    + ntp_update_offset(txc->offset, ts);

    if (txc->modes & ADJ_TICK)
    tick_usec = txc->tick;
    @@ -526,6 +533,9 @@

    write_sequnlock_irq(&xtime_lock);

    + if ((txc->modes & ADJ_OFFSET) && !(time_status & STA_PLL))
    + do_settimeofday(&ts);
    +
    txc->time.tv_sec = ts.tv_sec;
    txc->time.tv_usec = ts.tv_nsec;
    if (!(time_status & STA_NANO))
    --
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2011-01-01 21:41    [W:0.020 / U:120.540 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site