summaryrefslogtreecommitdiffstats
path: root/clockB/hwclock.h
diff options
context:
space:
mode:
Diffstat (limited to 'clockB/hwclock.h')
-rw-r--r--clockB/hwclock.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/clockB/hwclock.h b/clockB/hwclock.h
new file mode 100644
index 000000000..6a3ab14bd
--- /dev/null
+++ b/clockB/hwclock.h
@@ -0,0 +1,139 @@
+#include <time.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+typedef int bool;
+#define TRUE 1
+#define FALSE 0
+
+#define MYNAME "hwclock"
+#define VERSION "2.5"
+
+
+enum clock_access_method {ISA, RTC_IOCTL, KD, DEV_PORT, NOCLOCK};
+ /* A method for accessing (reading, writing) the hardware clock:
+
+ ISA:
+ via direct CPU I/O instructions that work on an ISA family
+ machine (IBM PC compatible) or most DEC Alphas, which implement
+ enough of ISA to get by.
+
+ RTC_IOCTL:
+ via the rtc device driver, using device special file /dev/rtc.
+
+ KD:
+ via the console driver, using device special file /dev/tty1.
+ This is the m68k ioctl interface, known as KDGHWCLK.
+
+ DEV_PORT:
+ via the /dev/port device, which is almost the same thing as
+ direct I/O instructions via the ISA method, but works on a Jensen
+ model of Alpha, whereas ISA does not. Also, use I/O addresses
+ 0x170 and 0x171 instead of the ISA 0x70 and 0x71.
+
+ NO_CLOCK:
+ Unable to determine a usable access method for the system clock.
+ */
+
+
+
+
+/* hwclock.c */
+extern int debug;
+extern const bool alpha_machine;
+extern const bool isa_machine;
+
+/* directio.c */
+
+extern void
+assume_interrupts_enabled(void);
+
+extern void
+synchronize_to_clock_tick_ISA(int *retcode_p, const int dev_port,
+ const bool use_uf_bit);
+
+extern void
+read_hardware_clock_isa(struct tm *tm, const int dev_port,
+ int hc_zero_year);
+
+extern void
+set_hardware_clock_isa(const struct tm new_tm,
+ const int hc_zero_year,
+ const int dev_port,
+ const bool testing);
+
+extern void
+get_inb_outb_privilege(const enum clock_access_method clock_access,
+ bool * const no_auth_p);
+
+extern void
+get_dev_port_access(const enum clock_access_method clock_access,
+ int * dev_port_p);
+
+extern bool
+uf_bit_needed(const bool user_wants_uf);
+
+extern int
+zero_year(const bool arc_opt, const bool srm_opt);
+
+
+/* rtc.c */
+extern void
+synchronize_to_clock_tick_RTC(int *retcode_p);
+
+extern void
+read_hardware_clock_rtc_ioctl(struct tm *tm);
+
+extern void
+set_hardware_clock_rtc_ioctl(const struct tm new_broken_time,
+ const bool testing);
+extern void
+see_if_rtc_works(bool * const rtc_works_p);
+
+extern void
+get_epoch(unsigned long *epoch_p, char **reason_p);
+
+extern void
+set_epoch(unsigned long epoch, const bool testing, int *retcode_p);
+
+
+/* kd.c */
+
+extern void
+synchronize_to_clock_tick_KD(int *retcode_p);
+
+extern void
+read_hardware_clock_kd(struct tm *tm);
+
+extern void
+set_hardware_clock_kd(const struct tm new_broken_time,
+ const bool testing);
+
+extern void
+see_if_kdghwclk_works(bool * const kdghwclk_works_p);
+
+extern const bool got_kdghwclk;
+
+/* util.c */
+extern bool
+is_in_cpuinfo(const char * const fmt, const char * const str);
+
+extern char *
+ctime2(const time_t time);
+
+extern struct timeval
+t2tv(time_t argument);
+
+extern struct timeval
+t2tv(time_t argument);
+
+extern float
+time_diff(struct timeval subtrahend, struct timeval subtractor);
+
+extern struct timeval
+time_inc(struct timeval addend, float increment);
+
+
+
+
+