kernel: Use uint64 for seconds in datetime conversion routines.
This commit is contained in:
@@ -50,7 +50,7 @@ public:
|
|||||||
// mimic the PC CMOS
|
// mimic the PC CMOS
|
||||||
virtual uint8 ReadRTCReg(uint8 reg) = 0;
|
virtual uint8 ReadRTCReg(uint8 reg) = 0;
|
||||||
virtual void WriteRTCReg(uint8 reg, uint8 val) = 0;
|
virtual void WriteRTCReg(uint8 reg, uint8 val) = 0;
|
||||||
virtual void SetHardwareRTC(uint32 seconds) = 0;
|
virtual void SetHardwareRTC(uint64 seconds) = 0;
|
||||||
virtual uint32 GetHardwareRTC() = 0;
|
virtual uint32 GetHardwareRTC() = 0;
|
||||||
|
|
||||||
virtual void SetHardwareTimer(bigtime_t timeout) = 0;
|
virtual void SetHardwareTimer(bigtime_t timeout) = 0;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar() = 0;
|
virtual char SerialDebugGetChar() = 0;
|
||||||
virtual void SerialDebugPutChar(char c) = 0;
|
virtual void SerialDebugPutChar(char c) = 0;
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds) = 0;
|
virtual void SetHardwareRTC(uint64 seconds) = 0;
|
||||||
virtual uint32 GetHardwareRTC() = 0;
|
virtual uint32 GetHardwareRTC() = 0;
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot) = 0;
|
virtual void ShutDown(bool reboot) = 0;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar() = 0;
|
virtual char SerialDebugGetChar() = 0;
|
||||||
virtual void SerialDebugPutChar(char c) = 0;
|
virtual void SerialDebugPutChar(char c) = 0;
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds) = 0;
|
virtual void SetHardwareRTC(uint64 seconds) = 0;
|
||||||
virtual uint32 GetHardwareRTC() = 0;
|
virtual uint32 GetHardwareRTC() = 0;
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot) = 0;
|
virtual void ShutDown(bool reboot) = 0;
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ extern "C" {
|
|||||||
|
|
||||||
status_t arch_rtc_init(struct kernel_args *args, struct real_time_data *data);
|
status_t arch_rtc_init(struct kernel_args *args, struct real_time_data *data);
|
||||||
|
|
||||||
void arch_rtc_set_hw_time(uint32 seconds);
|
void arch_rtc_set_hw_time(uint64 seconds);
|
||||||
// Set HW clock to 'seconds' since 1/1/1970
|
// Set HW clock to 'seconds' since 1/1/1970
|
||||||
uint32 arch_rtc_get_hw_time(void);
|
uint64 arch_rtc_get_hw_time(void);
|
||||||
// Returns number of seconds since 1/1/1970 as stored in HW
|
// Returns number of seconds since 1/1/1970 as stored in HW
|
||||||
|
|
||||||
void arch_rtc_set_system_time_offset(struct real_time_data *data,
|
void arch_rtc_set_system_time_offset(struct real_time_data *data,
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar() = 0;
|
virtual char SerialDebugGetChar() = 0;
|
||||||
virtual void SerialDebugPutChar(char c) = 0;
|
virtual void SerialDebugPutChar(char c) = 0;
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds) = 0;
|
virtual void SetHardwareRTC(uint64 seconds) = 0;
|
||||||
virtual uint32 GetHardwareRTC() = 0;
|
virtual uint32 GetHardwareRTC() = 0;
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot) = 0;
|
virtual void ShutDown(bool reboot) = 0;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ bigtime_t rtc_boot_time(void);
|
|||||||
|
|
||||||
// Both functions use the passed struct tm only partially
|
// Both functions use the passed struct tm only partially
|
||||||
// (no tm_wday, tm_yday, tm_isdst).
|
// (no tm_wday, tm_yday, tm_isdst).
|
||||||
uint32 rtc_tm_to_secs(const struct tm *t);
|
uint64 rtc_tm_to_secs(const struct tm *t);
|
||||||
void rtc_secs_to_tm(uint32 seconds, struct tm *t);
|
void rtc_secs_to_tm(uint64 seconds, struct tm *t);
|
||||||
|
|
||||||
uint32 get_timezone_offset(void);
|
uint32 get_timezone_offset(void);
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -30,7 +30,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -24,7 +24,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ cmos_to_secs(const cmos_time *cmos)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
secs_to_cmos(uint32 seconds, cmos_time *cmos)
|
secs_to_cmos(uint64 seconds, cmos_time *cmos)
|
||||||
{
|
{
|
||||||
int wholeYear;
|
int wholeYear;
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return M68KPlatform::Default()->GetHardwareRTC();
|
return M68KPlatform::Default()->GetHardwareRTC();
|
||||||
@@ -201,7 +201,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
M68KPlatform::Default()->SetHardwareRTC(seconds);
|
M68KPlatform::Default()->SetHardwareRTC(seconds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar();
|
virtual char SerialDebugGetChar();
|
||||||
virtual void SerialDebugPutChar(char c);
|
virtual void SerialDebugPutChar(char c);
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds);
|
virtual void SetHardwareRTC(uint64 seconds);
|
||||||
virtual uint32 GetHardwareRTC();
|
virtual uint32 GetHardwareRTC();
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot);
|
virtual void ShutDown(bool reboot);
|
||||||
@@ -183,7 +183,7 @@ PPCOpenFirmware::SerialDebugPutChar(char c)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PPCOpenFirmware::SetHardwareRTC(uint32 seconds)
|
PPCOpenFirmware::SetHardwareRTC(uint64 seconds)
|
||||||
{
|
{
|
||||||
struct tm t;
|
struct tm t;
|
||||||
rtc_secs_to_tm(seconds, &t);
|
rtc_secs_to_tm(seconds, &t);
|
||||||
@@ -246,7 +246,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar();
|
virtual char SerialDebugGetChar();
|
||||||
virtual void SerialDebugPutChar(char c);
|
virtual void SerialDebugPutChar(char c);
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds);
|
virtual void SetHardwareRTC(uint64 seconds);
|
||||||
virtual uint32 GetHardwareRTC();
|
virtual uint32 GetHardwareRTC();
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot);
|
virtual void ShutDown(bool reboot);
|
||||||
@@ -331,7 +331,7 @@ PPCUBoot::SerialDebugPutChar(char c)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
PPCUBoot::SetHardwareRTC(uint32 seconds)
|
PPCUBoot::SetHardwareRTC(uint64 seconds)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return PPCPlatform::Default()->GetHardwareRTC();
|
return PPCPlatform::Default()->GetHardwareRTC();
|
||||||
@@ -49,7 +49,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
PPCPlatform::Default()->SetHardwareRTC(seconds);
|
PPCPlatform::Default()->SetHardwareRTC(seconds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,15 +25,15 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return (uint32)(HtifCmd(2, 0, 0) / 1000000);
|
return (HtifCmd(2, 0, 0) / 1000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public:
|
|||||||
virtual char SerialDebugGetChar();
|
virtual char SerialDebugGetChar();
|
||||||
virtual void SerialDebugPutChar(char c);
|
virtual void SerialDebugPutChar(char c);
|
||||||
|
|
||||||
virtual void SetHardwareRTC(uint32 seconds);
|
virtual void SetHardwareRTC(uint64 seconds);
|
||||||
virtual uint32 GetHardwareRTC();
|
virtual uint32 GetHardwareRTC();
|
||||||
|
|
||||||
virtual void ShutDown(bool reboot);
|
virtual void ShutDown(bool reboot);
|
||||||
@@ -183,7 +183,7 @@ SparcOpenFirmware::SerialDebugPutChar(char c)
|
|||||||
|
|
||||||
// SetHardwareRTC
|
// SetHardwareRTC
|
||||||
void
|
void
|
||||||
SparcOpenFirmware::SetHardwareRTC(uint32 seconds)
|
SparcOpenFirmware::SetHardwareRTC(uint64 seconds)
|
||||||
{
|
{
|
||||||
struct tm t;
|
struct tm t;
|
||||||
rtc_secs_to_tm(seconds, &t);
|
rtc_secs_to_tm(seconds, &t);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ arch_rtc_init(kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
@@ -19,7 +19,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ cmos_to_secs(const cmos_time *cmos)
|
|||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
secs_to_cmos(uint32 seconds, cmos_time *cmos)
|
secs_to_cmos(uint64 seconds, cmos_time *cmos)
|
||||||
{
|
{
|
||||||
int wholeYear;
|
int wholeYear;
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ arch_rtc_init(struct kernel_args *args, struct real_time_data *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32
|
uint64
|
||||||
arch_rtc_get_hw_time(void)
|
arch_rtc_get_hw_time(void)
|
||||||
{
|
{
|
||||||
int waitTime;
|
int waitTime;
|
||||||
@@ -209,7 +209,7 @@ arch_rtc_get_hw_time(void)
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
arch_rtc_set_hw_time(uint32 seconds)
|
arch_rtc_set_hw_time(uint64 seconds)
|
||||||
{
|
{
|
||||||
cmos_time cmos;
|
cmos_time cmos;
|
||||||
|
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public:
|
|||||||
|
|
||||||
virtual uint8 ReadRTCReg(uint8 reg);
|
virtual uint8 ReadRTCReg(uint8 reg);
|
||||||
virtual void WriteRTCReg(uint8 reg, uint8 val);
|
virtual void WriteRTCReg(uint8 reg, uint8 val);
|
||||||
virtual void SetHardwareRTC(uint32 seconds);
|
virtual void SetHardwareRTC(uint64 seconds);
|
||||||
virtual uint32 GetHardwareRTC();
|
virtual uint32 GetHardwareRTC();
|
||||||
|
|
||||||
virtual void SetHardwareTimer(bigtime_t timeout);
|
virtual void SetHardwareTimer(bigtime_t timeout);
|
||||||
@@ -617,7 +617,7 @@ M68KAtari::WriteRTCReg(uint8 reg, uint8 val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
M68KAtari::SetHardwareRTC(uint32 seconds)
|
M68KAtari::SetHardwareRTC(uint64 seconds)
|
||||||
{
|
{
|
||||||
#warning M68K: WRITEME
|
#warning M68K: WRITEME
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ real_time_clock_changed()
|
|||||||
static void
|
static void
|
||||||
rtc_system_to_hw(void)
|
rtc_system_to_hw(void)
|
||||||
{
|
{
|
||||||
uint32 seconds;
|
uint64 seconds;
|
||||||
|
|
||||||
seconds = (arch_rtc_get_system_time_offset(sRealTimeData) + system_time()
|
seconds = (arch_rtc_get_system_time_offset(sRealTimeData) + system_time()
|
||||||
+ (sIsGMT ? 0 : sTimezoneOffset)) / 1000000;
|
+ (sIsGMT ? 0 : sTimezoneOffset)) / 1000000;
|
||||||
@@ -66,7 +66,7 @@ rtc_system_to_hw(void)
|
|||||||
static void
|
static void
|
||||||
rtc_hw_to_system(void)
|
rtc_hw_to_system(void)
|
||||||
{
|
{
|
||||||
uint32 current_time;
|
uint64 current_time;
|
||||||
|
|
||||||
current_time = arch_rtc_get_hw_time();
|
current_time = arch_rtc_get_hw_time();
|
||||||
set_real_time_clock(current_time + (sIsGMT ? 0 : sTimezoneOffset));
|
set_real_time_clock(current_time + (sIsGMT ? 0 : sTimezoneOffset));
|
||||||
@@ -175,7 +175,7 @@ get_timezone_offset(void)
|
|||||||
/*! Converts the \a tm data to seconds. Note that the base year is not
|
/*! Converts the \a tm data to seconds. Note that the base year is not
|
||||||
1900 as in POSIX, but 1970.
|
1900 as in POSIX, but 1970.
|
||||||
*/
|
*/
|
||||||
uint32
|
uint64
|
||||||
rtc_tm_to_secs(const struct tm *tm)
|
rtc_tm_to_secs(const struct tm *tm)
|
||||||
{
|
{
|
||||||
uint32 days;
|
uint32 days;
|
||||||
@@ -191,13 +191,13 @@ rtc_tm_to_secs(const struct tm *tm)
|
|||||||
+ 367 * (month - 2 - 12 * ((month - 14) / 12)) / 12
|
+ 367 * (month - 2 - 12 * ((month - 14) / 12)) / 12
|
||||||
- 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4;
|
- 3 * ((year + 4900 + (month - 14) / 12) / 100) / 4;
|
||||||
|
|
||||||
return days * RTC_SECONDS_DAY + tm->tm_hour * 3600 + tm->tm_min * 60
|
return (uint64)days * RTC_SECONDS_DAY + tm->tm_hour * 3600 + tm->tm_min * 60
|
||||||
+ tm->tm_sec;
|
+ tm->tm_sec;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
rtc_secs_to_tm(uint32 seconds, struct tm *t)
|
rtc_secs_to_tm(uint64 seconds, struct tm *t)
|
||||||
{
|
{
|
||||||
uint32 year, month, day, l, n;
|
uint32 year, month, day, l, n;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user