summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2016-02-08 08:25:53 +0000
committerJohn Crispin <john@openwrt.org>2016-02-08 08:25:53 +0000
commite2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89 (patch)
treee835f6d77792727141ab1e78765b32a7dfc11f36
parentbadeccf6a8ccf43a2895b4152701cbee3d1b429f (diff)
downloadmaster-31e0f0ae-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.gz
master-31e0f0ae-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.bz2
master-31e0f0ae-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.zip
base-files: For sysfixtime use hwclock if RTC available
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> SVN-Revision: 48661
-rwxr-xr-xpackage/base-files/files/etc/init.d/sysfixtime14
1 files changed, 14 insertions, 0 deletions
diff --git a/package/base-files/files/etc/init.d/sysfixtime b/package/base-files/files/etc/init.d/sysfixtime
index 4010e06f93..ab946f6518 100755
--- a/package/base-files/files/etc/init.d/sysfixtime
+++ b/package/base-files/files/etc/init.d/sysfixtime
@@ -2,10 +2,24 @@
# Copyright (C) 2013-2014 OpenWrt.org
START=00
+STOP=90
+
+RTC_DEV=/dev/rtc0
+HWCLOCK=/sbin/hwclock
boot() {
+ start && 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"
+}