diff mbox

[OpenWrt-Devel,v2] base-files: For sysfixtime use hwclock if RTC available

Message ID 1453281105-32551-1-git-send-email-ynezz@true.cz
State Changes Requested
Headers show

Commit Message

Petr Štetiar Jan. 20, 2016, 9:11 a.m. UTC
From: Daniel Dickinson <openwrt@daniel.thecshore.com>

On systems that have an RTC prefer it to the file-based time fixup (i.e.
use hwclock when there is a permanent clock instead of the faked up time
logic that is needed when there is not RTC).

We can't rely on hctosys kernel feature either as we're usually using
RTC as kernel modules which are usually being loaded after hctosys was
run, leading in the following error:

  hctosys: unable to open rtc device (rtc0)

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---

Changes in v2:
 * use short form for file existence testing
 * use /dev/rtc0 instead of /dev/rtc for RTC checking
 * additionaly check for hwclock binary existence also
 * tell hwclock explicitly which device to use as RTC source
 * inform about the RTC time change in the log

 package/base-files/files/etc/init.d/sysfixtime |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

Comments

Bastian Bittorf Jan. 20, 2016, 9:17 a.m. UTC | #1
* Petr Štetiar <ynezz@true.cz> [20.01.2016 10:14]:

thank you!

>  START=00
> +STOP=90
> +
> +rtc_dev=/dev/rtc0
> +hwclock=/sbin/hwclock

please use varname in UPPERCASE if global (just a style issue)
the rest looks good to me.

bye, bastian
diff mbox

Patch

diff --git a/package/base-files/files/etc/init.d/sysfixtime b/package/base-files/files/etc/init.d/sysfixtime
index 4010e06..ec04d1a 100755
--- a/package/base-files/files/etc/init.d/sysfixtime
+++ b/package/base-files/files/etc/init.d/sysfixtime
@@ -2,10 +2,25 @@ 
 # Copyright (C) 2013-2014 OpenWrt.org
 
 START=00
+STOP=90
+
+rtc_dev=/dev/rtc0
+hwclock=/sbin/hwclock
 
 boot() {
+	[ -e "$rtc_dev" ] && [ -e "$hwclock" ] && $hwclock -s -f $rtc_dev && exit 0
+
 	local curtime="$(date +%s)"
 	local maxtime="$(find /etc -type f -exec date -r {} +%s \; | sort -nr | head -n1)"
 	[ $curtime -lt $maxtime ] && date -s @$maxtime
 }
 
+start() {
+	[ -e "$rtc_dev" ] && [ -e "$hwclock" ] && $hwclock -s -f $rtc_dev
+}
+
+stop() {
+	[ -e "$rtc_dev" ] && [ -e "$hwclock" ] && \
+		$hwclock -w -f $rtc_dev && \
+		logger -t sysfixtime "saved '$(date)' to $rtc_dev"
+}