diff options
author | Carlos Santos | 2019-07-03 18:31:34 +0200 |
---|---|---|
committer | Karel Zak | 2019-07-15 13:56:13 +0200 |
commit | 88bc304ba815e21b09373cfec4e2f1f087482214 (patch) | |
tree | 7a506442d31a050492e040b5e19c40d9568fd36a | |
parent | tests: (libmount) make X-* and x-* more robust (diff) | |
download | kernel-qcow2-util-linux-88bc304ba815e21b09373cfec4e2f1f087482214.tar.gz kernel-qcow2-util-linux-88bc304ba815e21b09373cfec4e2f1f087482214.tar.xz kernel-qcow2-util-linux-88bc304ba815e21b09373cfec4e2f1f087482214.zip |
hwclock: use CMOS clock only if available
- Add --disable-hwclock-cmos configuration argument
- Add USE_HWCLOCK_CMOS (enabled by default for i386/x86_64)
- Add define(USE_HWCLOCK_CMOS)
- Compile hwclock-cmos.c only if USE_HWCLOCK_CMOS is true
- Remove all unnecessary #ifdefs from hwclock-cmos.c
- Add #ifdef USE_HWCLOCK_CMOS around the determine_clock_access_method()
call in hwclock.c
Signed-off-by: Carlos Santos <unixmania@gmail.com>
-rw-r--r-- | configure.ac | 13 | ||||
-rw-r--r-- | sys-utils/Makemodule.am | 7 | ||||
-rw-r--r-- | sys-utils/hwclock-cmos.c | 47 | ||||
-rw-r--r-- | sys-utils/hwclock.c | 2 |
4 files changed, 26 insertions, 43 deletions
diff --git a/configure.ac b/configure.ac index 997b6388c..8aa2fed38 100644 --- a/configure.ac +++ b/configure.ac @@ -1517,6 +1517,19 @@ UL_REQUIRES_HAVE([hwclock], [io, linuxdummy], [ioperm iopl function or Linux]) AM_CONDITIONAL([BUILD_HWCLOCK], [test "x$build_hwclock" = xyes]) +AC_ARG_ENABLE([hwclock-cmos], + AS_HELP_STRING([--disable-hwclock-cmos], [do not use CMOS clock]), + [], [use_hwclock_cmos="$build_hwclock"] +) + +AS_IF([test "x$use_hwclock_cmos" = xyes], [ + AM_CONDITIONAL([USE_HWCLOCK_CMOS], [true]) + AC_DEFINE([USE_HWCLOCK_CMOS], [1], [Define to 1 if want to use CMOS clock.]) +],[ + AM_CONDITIONAL([USE_HWCLOCK_CMOS], [false]) +]) + + UL_BUILD_INIT([mkfs], [yes]) AM_CONDITIONAL([BUILD_MKFS], [test "x$build_mkfs" = xyes]) diff --git a/sys-utils/Makemodule.am b/sys-utils/Makemodule.am index 7c118a6de..98e2cc29b 100644 --- a/sys-utils/Makemodule.am +++ b/sys-utils/Makemodule.am @@ -451,9 +451,12 @@ dist_man_MANS += \ PATHFILES += sys-utils/hwclock.8 hwclock_SOURCES = \ sys-utils/hwclock.c \ - sys-utils/hwclock.h \ - sys-utils/hwclock-cmos.c + sys-utils/hwclock.h hwclock_LDADD = $(LDADD) libcommon.la -lm +if USE_HWCLOCK_CMOS +hwclock_SOURCES += \ + sys-utils/hwclock-cmos.c +endif if LINUX hwclock_SOURCES += \ sys-utils/hwclock-rtc.c \ diff --git a/sys-utils/hwclock-cmos.c b/sys-utils/hwclock-cmos.c index a11f676b8..4d3e023d9 100644 --- a/sys-utils/hwclock-cmos.c +++ b/sys-utils/hwclock-cmos.c @@ -56,37 +56,13 @@ #include "pathnames.h" /* for inb, outb */ -#if defined(__i386__) || defined(__x86_64__) -# ifdef HAVE_SYS_IO_H -# include <sys/io.h> -# elif defined(HAVE_ASM_IO_H) -# include <asm/io.h> -# else -# undef __i386__ -# undef __x86_64__ -# warning "disable cmos access - no sys/io.h or asm/io.h" -static void outb(int a __attribute__((__unused__)), - int b __attribute__((__unused__))) -{ -} - -static int inb(int c __attribute__((__unused__))) -{ - return 0; -} -# endif /* __i386__ __x86_64__ */ +#ifdef HAVE_SYS_IO_H +# include <sys/io.h> +#elif defined(HAVE_ASM_IO_H) +# include <asm/io.h> #else -# warning "disable cmos access - not i386 or x86_64" -static void outb(int a __attribute__((__unused__)), - int b __attribute__((__unused__))) -{ -} - -static int inb(int c __attribute__((__unused__))) -{ - return 0; -} -#endif /* for inb, outb */ +# error "no sys/io.h or asm/io.h" +#endif /* HAVE_SYS_IO_H, HAVE_ASM_IO_H */ #include "hwclock.h" @@ -360,7 +336,6 @@ static int set_hardware_clock_cmos(const struct hwclock_control *ctl return 0; } -#if defined(__i386__) || defined(__x86_64__) # if defined(HAVE_IOPL) static int i386_iopl(const int level) { @@ -373,12 +348,6 @@ static int i386_iopl(const int level __attribute__ ((__unused__))) return ioperm(clock_ctl_addr, 2, 1); } # endif -#else -static int i386_iopl(const int level __attribute__ ((__unused__))) -{ - return IOPL_NOT_IMPLEMENTED; -} -#endif static int get_permissions_cmos(void) { @@ -412,9 +381,5 @@ static struct clock_ops cmos_interface = { */ struct clock_ops *probe_for_cmos_clock(void) { -#if defined(__i386__) || defined(__x86_64__) return &cmos_interface; -#else - return NULL; -#endif } diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c index a2c5cc2a4..c01a86826 100644 --- a/sys-utils/hwclock.c +++ b/sys-utils/hwclock.c @@ -925,8 +925,10 @@ static void determine_clock_access_method(const struct hwclock_control *ctl) { ur = NULL; +#ifdef USE_HWCLOCK_CMOS if (ctl->directisa) ur = probe_for_cmos_clock(); +#endif #ifdef __linux__ if (!ur) ur = probe_for_rtc_clock(ctl); |