summaryrefslogtreecommitdiff
path: root/package/base-files/files/etc
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
parentbadeccf6a8ccf43a2895b4152701cbee3d1b429f (diff)
downloadmtk-20170518-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.zip
mtk-20170518-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.gz
mtk-20170518-e2fd1adaf57800bb2a6e20bd59a02e76eb6d7f89.tar.bz2
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')
-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 4010e06..ab946f6 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"
+}