Skip to content

Commit

Permalink
ntp: let update_persistent_clock() sleep
Browse files Browse the repository at this point in the history
This is a change that makes the 11-minute RTC update be run in the process
context.  This is so that update_persistent_clock() can sleep, which may
be required for certain types of RTC hardware -- most notably I2C devices.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: Roman Zippel <zippel@linux-m68k.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: David Brownell <david-b@pacbell.net>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Maciej W. Rozycki authored and Thomas Gleixner committed Sep 24, 2008
1 parent 77dd3b3 commit eb3f938
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions kernel/time/ntp.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@

#include <linux/mm.h>
#include <linux/time.h>
#include <linux/timer.h>
#include <linux/timex.h>
#include <linux/jiffies.h>
#include <linux/hrtimer.h>
#include <linux/capability.h>
#include <linux/math64.h>
#include <linux/clocksource.h>
#include <linux/workqueue.h>
#include <asm/timex.h>

/*
Expand Down Expand Up @@ -218,11 +218,11 @@ void second_overflow(void)
/* Disable the cmos update - used by virtualization and embedded */
int no_sync_cmos_clock __read_mostly;

static void sync_cmos_clock(unsigned long dummy);
static void sync_cmos_clock(struct work_struct *work);

static DEFINE_TIMER(sync_cmos_timer, sync_cmos_clock, 0, 0);
static DECLARE_DELAYED_WORK(sync_cmos_work, sync_cmos_clock);

static void sync_cmos_clock(unsigned long dummy)
static void sync_cmos_clock(struct work_struct *work)
{
struct timespec now, next;
int fail = 1;
Expand Down Expand Up @@ -258,13 +258,13 @@ static void sync_cmos_clock(unsigned long dummy)
next.tv_sec++;
next.tv_nsec -= NSEC_PER_SEC;
}
mod_timer(&sync_cmos_timer, jiffies + timespec_to_jiffies(&next));
schedule_delayed_work(&sync_cmos_work, timespec_to_jiffies(&next));
}

static void notify_cmos_timer(void)
{
if (!no_sync_cmos_clock)
mod_timer(&sync_cmos_timer, jiffies + 1);
schedule_delayed_work(&sync_cmos_work, 0);
}

#else
Expand Down

0 comments on commit eb3f938

Please sign in to comment.