#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
#define BIN_TO_BCD(val) ((val)=(((val)/10)<<4) + (val)%10)
+#define IOPL_NOT_IMPLEMENTED -2
+
/*
* The epoch.
*
#else
static int i386_iopl(const int level __attribute__ ((__unused__)))
{
- return -2;
+ return IOPL_NOT_IMPLEMENTED;
}
#endif
rc = 0;
} else {
rc = i386_iopl(3);
- if (rc == -2) {
+ if (rc == IOPL_NOT_IMPLEMENTED) {
warnx(_("I failed to get permission because I didn't try."));
} else if (rc != 0) {
rc = errno;
rc = do_rtc_read_ioctl(rtc_fd, &start_time);
if (rc)
- return 1;
+ return RTC_BUSYWAIT_FAILED;
/*
* Wait for change. Should be within a second, but in case
gettimeofday(&now, NULL);
if (time_diff(now, begin) > 1.5) {
warnx(_("Timed out waiting for time change."));
- return 2;
+ return RTC_BUSYWAIT_TIMEOUT;
}
} while (1);
if (rc)
- return 3;
- return 0;
+ return RTC_BUSYWAIT_FAILED;
+ return RTC_BUSYWAIT_OK;
}
/*
rc = synchronize_to_clock_tick(ctl);
/*
- * 2 = synchronization timeout. We don't
- * error out if the user is attempting to
- * set the RTC - the RTC could be
- * functioning but contain invalid time data
- * so we still want to allow a user to set
- * the RTC time.
+ * We don't error out if the user is attempting to set the
+ * RTC and synchronization timeout happens - the RTC could
+ * be functioning but contain invalid time data so we still
+ * want to allow a user to set the RTC time.
*/
- if (rc && rc != 2 && !ctl->set && !ctl->systohc)
+ if (rc == RTC_BUSYWAIT_FAILED && !ctl->set && !ctl->systohc)
return EX_IOERR;
gettimeofday(&read_time, NULL);
#include "c.h"
+enum {
+ RTC_BUSYWAIT_OK = 0,
+ RTC_BUSYWAIT_FAILED,
+ RTC_BUSYWAIT_TIMEOUT
+};
+
struct hwclock_control {
char *date_opt;
unsigned long epoch_option;