aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/etc/init.d/sysfixtime
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 /package/base-files/files/etc/init.d/sysfixtime
parentbadeccf6a8ccf43a2895b4152701cbee3d1b429f (diff)
downloadupstream-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.gz
upstream-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.bz2
upstream-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
Diffstat (limited to 'package/base-files/files/etc/init.d/sysfixtime')
-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"
+}