diff options
| author | Jeff Garzik <jgarzik@pobox.com> | 2005-08-17 00:51:31 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-17 00:51:31 -0400 |
| commit | a2e30e529a48ef4e106e405f91cf4ae525bb01c4 (patch) | |
| tree | 2def96ef17c0672c30f1a10287552978bf1d0b1c /drivers/char/rtc.c | |
| parent | edb3366703224d5d8df573ae698ccd6b488dc743 (diff) | |
| parent | 2ad56496627630ebc99f06af5f81ca23e17e014e (diff) | |
Merge /spare/repo/linux-2.6/
Diffstat (limited to 'drivers/char/rtc.c')
| -rw-r--r-- | drivers/char/rtc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/rtc.c b/drivers/char/rtc.c index d8f9e94ae47..cd4fe8b1709 100644 --- a/drivers/char/rtc.c +++ b/drivers/char/rtc.c @@ -1209,6 +1209,7 @@ static int rtc_proc_open(struct inode *inode, struct file *file) void rtc_get_rtc_time(struct rtc_time *rtc_tm) { + unsigned long uip_watchdog = jiffies; unsigned char ctrl; #ifdef CONFIG_MACH_DECSTATION unsigned int real_year; @@ -1224,8 +1225,10 @@ void rtc_get_rtc_time(struct rtc_time *rtc_tm) * Once the read clears, read the RTC time (again via ioctl). Easy. */ - if (rtc_is_updating() != 0) - msleep(20); + while (rtc_is_updating() != 0 && jiffies - uip_watchdog < 2*HZ/100) { + barrier(); + cpu_relax(); + } /* * Only the values that we read from the RTC are set. We leave |
