The KDGHWCLK has been gone quite a while. Reference: http://marc.info/?l=linux-kernel&m=104171103925897 Signed-off-by: Sami Kerola <kerolasa@xxxxxx> --- sys-utils/Makemodule.am | 3 +- sys-utils/hwclock-kd.c | 180 ------------------------------------------------ sys-utils/hwclock.c | 3 - sys-utils/hwclock.h | 1 - 4 files changed, 1 insertion(+), 186 deletions(-) delete mode 100644 sys-utils/hwclock-kd.c diff --git a/sys-utils/Makemodule.am b/sys-utils/Makemodule.am index 058bb62..2ae039c 100644 --- a/sys-utils/Makemodule.am +++ b/sys-utils/Makemodule.am @@ -353,8 +353,7 @@ PATHFILES += sys-utils/hwclock.8 hwclock_SOURCES = \ sys-utils/hwclock.c \ sys-utils/hwclock.h \ - sys-utils/hwclock-cmos.c \ - sys-utils/hwclock-kd.c + sys-utils/hwclock-cmos.c if LINUX hwclock_SOURCES += sys-utils/hwclock-rtc.c endif diff --git a/sys-utils/hwclock-kd.c b/sys-utils/hwclock-kd.c deleted file mode 100644 index 3dac707..0000000 --- a/sys-utils/hwclock-kd.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * kd.c - KDGHWCLK stuff, possibly m68k only, likely to be deprecated - */ -#include "hwclock.h" - -#ifdef __m68k__ - -# include <fcntl.h> -# include <sysexits.h> -# include <sys/ioctl.h> -# include <unistd.h> - -# include "nls.h" - -/* Get defines for KDGHWCLK and KDSHWCLK (m68k) */ -# include <linux/kd.h> - -/* Even on m68k, if KDGHWCLK (antique) is not defined, don't build this */ - -#endif - -#if !defined(__m68k__) || !defined(KDGHWCLK) - -#include <stddef.h> -struct clock_ops *probe_for_kd_clock(void) -{ - return NULL; -} - -#else /* __m68k__ && KDGHWCLK */ - -/* Opened by probe_for_kd_clock(), and never closed. */ -static int con_fd = -1; -static char *con_fd_filename; /* usually "/dev/tty1" */ - -/* - * Wait for the top of a clock tick by calling KDGHWCLK in a busy loop until - * we see it. - */ -static int synchronize_to_clock_tick_kd(void) -{ - /* The time when we were called (and started waiting) */ - struct hwclk_time start_time, nowtime; - struct timeval begin, now; - - if (debug) - printf(_("Waiting in loop for time from KDGHWCLK to change\n")); - - if (ioctl(con_fd, KDGHWCLK, &start_time) == -1) { - warn(_("KDGHWCLK ioctl to read time failed")); - return 3; - } - - /* - * Wait for change. Should be within a second, but in case something - * weird happens, we have a time limit (1.5s) on this loop to reduce - * the impact of this failure. - */ - gettimeofday(&begin, NULL); - do { - /* - * Added by Roman Hodek <Roman.Hodek@xxxxxxxxxxxxxxxxxxxxxxxxxx> - * - * "The culprit is the fast loop with KDGHWCLK ioctls. It - * seems the kernel gets confused by those on Amigas with - * A2000 RTCs and simply hangs after some time. Inserting a - * sleep helps." - */ - xusleep(1); - - if (ioctl(con_fd, KDGHWCLK, &nowtime) == -1) { - warn(_("KDGHWCLK ioctl to read time failed in loop")); - return 3; - } - if (start_time.tm_sec != nowtime.tm_sec) - break; - gettimeofday(&now, NULL); - if (time_diff(now, begin) > 1.5) { - warnx(_("Timed out waiting for time change.")); - return 2; - } - } while (1); - - return 0; -} - -/* - * Read the hardware clock and return the current time via <tm> argument. - * Use ioctls to /dev/tty1 on what we assume is an m68k machine. - * - * Note that we don't use /dev/console here. That might be a serial console. - */ -static int read_hardware_clock_kd(struct tm *tm) -{ - struct hwclk_time t; - - if (ioctl(con_fd, KDGHWCLK, &t) == -1) { - warn(_("ioctl() failed to read time from %s"), - con_fd_filename); - hwclock_exit(EX_IOERR); - } - - tm->tm_sec = t.sec; - tm->tm_min = t.min; - tm->tm_hour = t.hour; - tm->tm_mday = t.day; - tm->tm_mon = t.mon; - tm->tm_year = t.year; - tm->tm_wday = t.wday; - tm->tm_isdst = -1; /* Don't know if it's Daylight Savings Time */ - - return 0; -} - -/* - * Set the Hardware Clock to the time <new_broken_time>. Use ioctls to - * /dev/tty1 on what we assume is an m68k machine. - * - * Note that we don't use /dev/console here. That might be a serial console. - */ -static int set_hardware_clock_kd(const struct tm *new_broken_time) -{ - struct hwclk_time t; - - t.sec = new_broken_time->tm_sec; - t.min = new_broken_time->tm_min; - t.hour = new_broken_time->tm_hour; - t.day = new_broken_time->tm_mday; - t.mon = new_broken_time->tm_mon; - t.year = new_broken_time->tm_year; - t.wday = new_broken_time->tm_wday; - - if (ioctl(con_fd, KDSHWCLK, &t) == -1) { - warn(_("ioctl KDSHWCLK failed")); - hwclock_exit(EX_IOERR); - } - return 0; -} - -static int get_permissions_kd(void) -{ - return 0; -} - -static struct clock_ops kd = { - N_("Using the KDGHWCLK interface to m68k clock."), - get_permissions_kd, - read_hardware_clock_kd, - set_hardware_clock_kd, - synchronize_to_clock_tick_kd, -}; - -/* return &kd if KDGHWCLK works, NULL otherwise */ -struct clock_ops *probe_for_kd_clock() -{ - struct clock_ops *ret = NULL; - struct hwclk_time t; - - if (con_fd < 0) { /* first time here */ - con_fd_filename = "/dev/tty1"; - con_fd = open(con_fd_filename, O_RDONLY); - } - if (con_fd < 0) { - /* perhaps they are using devfs? */ - con_fd_filename = "/dev/vc/1"; - con_fd = open(con_fd_filename, O_RDONLY); - } - if (con_fd < 0) { - /* probably KDGHWCLK exists on m68k only */ - warn(_("Can't open /dev/tty1 or /dev/vc/1")); - } else { - if (ioctl(con_fd, KDGHWCLK, &t) == -1) { - if (errno != EINVAL) - warn(_("KDGHWCLK ioctl failed")); - } else - ret = &kd; - } - return ret; -} -#endif /* __m68k__ && KDGHWCLK */ diff --git a/sys-utils/hwclock.c b/sys-utils/hwclock.c index 474e04f..d0d422d 100644 --- a/sys-utils/hwclock.c +++ b/sys-utils/hwclock.c @@ -1256,9 +1256,6 @@ static void determine_clock_access_method(const bool user_requests_ISA) ur = probe_for_rtc_clock(); #endif - if (!ur) - ur = probe_for_kd_clock(); - if (!ur && !user_requests_ISA) ur = probe_for_cmos_clock(); diff --git a/sys-utils/hwclock.h b/sys-utils/hwclock.h index 69b0ce2..974d96a 100644 --- a/sys-utils/hwclock.h +++ b/sys-utils/hwclock.h @@ -19,7 +19,6 @@ struct clock_ops { extern struct clock_ops *probe_for_cmos_clock(void); extern struct clock_ops *probe_for_rtc_clock(void); -extern struct clock_ops *probe_for_kd_clock(void); typedef int bool; -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe util-linux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html