kernel: Use uint64 for seconds in datetime conversion routines.

This commit is contained in:
Augustin Cavalier
2026-03-16 08:35:51 -04:00
parent b249bfc563
commit 913f501fbd
17 changed files with 38 additions and 38 deletions
@@ -50,7 +50,7 @@ public:
// mimic the PC CMOS
virtual uint8 ReadRTCReg(uint8 reg) = 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 void SetHardwareTimer(bigtime_t timeout) = 0;
@@ -35,7 +35,7 @@ public:
virtual char SerialDebugGetChar() = 0;
virtual void SerialDebugPutChar(char c) = 0;
virtual void SetHardwareRTC(uint32 seconds) = 0;
virtual void SetHardwareRTC(uint64 seconds) = 0;
virtual uint32 GetHardwareRTC() = 0;
virtual void ShutDown(bool reboot) = 0;
@@ -34,7 +34,7 @@ public:
virtual char SerialDebugGetChar() = 0;
virtual void SerialDebugPutChar(char c) = 0;
virtual void SetHardwareRTC(uint32 seconds) = 0;
virtual void SetHardwareRTC(uint64 seconds) = 0;
virtual uint32 GetHardwareRTC() = 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);
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
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
void arch_rtc_set_system_time_offset(struct real_time_data *data,
@@ -33,7 +33,7 @@ public:
virtual char SerialDebugGetChar() = 0;
virtual void SerialDebugPutChar(char c) = 0;
virtual void SetHardwareRTC(uint32 seconds) = 0;
virtual void SetHardwareRTC(uint64 seconds) = 0;
virtual uint32 GetHardwareRTC() = 0;
virtual void ShutDown(bool reboot) = 0;
+2 -2
View File
@@ -30,8 +30,8 @@ bigtime_t rtc_boot_time(void);
// Both functions use the passed struct tm only partially
// (no tm_wday, tm_yday, tm_isdst).
uint32 rtc_tm_to_secs(const struct tm *t);
void rtc_secs_to_tm(uint32 seconds, struct tm *t);
uint64 rtc_tm_to_secs(const struct tm *t);
void rtc_secs_to_tm(uint64 seconds, struct tm *t);
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)
{
return 0;
@@ -30,7 +30,7 @@ arch_rtc_get_hw_time(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)
{
return 0;
@@ -24,7 +24,7 @@ arch_rtc_get_hw_time(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
secs_to_cmos(uint32 seconds, cmos_time *cmos)
secs_to_cmos(uint64 seconds, cmos_time *cmos)
{
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)
{
return M68KPlatform::Default()->GetHardwareRTC();
@@ -201,7 +201,7 @@ arch_rtc_get_hw_time(void)
void
arch_rtc_set_hw_time(uint32 seconds)
arch_rtc_set_hw_time(uint64 seconds)
{
M68KPlatform::Default()->SetHardwareRTC(seconds);
}
+4 -4
View File
@@ -57,7 +57,7 @@ public:
virtual char SerialDebugGetChar();
virtual void SerialDebugPutChar(char c);
virtual void SetHardwareRTC(uint32 seconds);
virtual void SetHardwareRTC(uint64 seconds);
virtual uint32 GetHardwareRTC();
virtual void ShutDown(bool reboot);
@@ -183,7 +183,7 @@ PPCOpenFirmware::SerialDebugPutChar(char c)
void
PPCOpenFirmware::SetHardwareRTC(uint32 seconds)
PPCOpenFirmware::SetHardwareRTC(uint64 seconds)
{
struct tm t;
rtc_secs_to_tm(seconds, &t);
@@ -246,7 +246,7 @@ public:
virtual char SerialDebugGetChar();
virtual void SerialDebugPutChar(char c);
virtual void SetHardwareRTC(uint32 seconds);
virtual void SetHardwareRTC(uint64 seconds);
virtual uint32 GetHardwareRTC();
virtual void ShutDown(bool reboot);
@@ -331,7 +331,7 @@ PPCUBoot::SerialDebugPutChar(char c)
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)
{
return PPCPlatform::Default()->GetHardwareRTC();
@@ -49,7 +49,7 @@ arch_rtc_get_hw_time(void)
void
arch_rtc_set_hw_time(uint32 seconds)
arch_rtc_set_hw_time(uint64 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)
{
return (uint32)(HtifCmd(2, 0, 0) / 1000000);
return (HtifCmd(2, 0, 0) / 1000000);
}
void
arch_rtc_set_hw_time(uint32 seconds)
arch_rtc_set_hw_time(uint64 seconds)
{
}
@@ -58,7 +58,7 @@ public:
virtual char SerialDebugGetChar();
virtual void SerialDebugPutChar(char c);
virtual void SetHardwareRTC(uint32 seconds);
virtual void SetHardwareRTC(uint64 seconds);
virtual uint32 GetHardwareRTC();
virtual void ShutDown(bool reboot);
@@ -183,7 +183,7 @@ SparcOpenFirmware::SerialDebugPutChar(char c)
// SetHardwareRTC
void
SparcOpenFirmware::SetHardwareRTC(uint32 seconds)
SparcOpenFirmware::SetHardwareRTC(uint64 seconds)
{
struct tm 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)
{
return 0;
@@ -19,7 +19,7 @@ arch_rtc_get_hw_time(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
secs_to_cmos(uint32 seconds, cmos_time *cmos)
secs_to_cmos(uint64 seconds, cmos_time *cmos)
{
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)
{
int waitTime;
@@ -209,7 +209,7 @@ arch_rtc_get_hw_time(void)
void
arch_rtc_set_hw_time(uint32 seconds)
arch_rtc_set_hw_time(uint64 seconds)
{
cmos_time cmos;
@@ -155,7 +155,7 @@ public:
virtual uint8 ReadRTCReg(uint8 reg);
virtual void WriteRTCReg(uint8 reg, uint8 val);
virtual void SetHardwareRTC(uint32 seconds);
virtual void SetHardwareRTC(uint64 seconds);
virtual uint32 GetHardwareRTC();
virtual void SetHardwareTimer(bigtime_t timeout);
@@ -617,7 +617,7 @@ M68KAtari::WriteRTCReg(uint8 reg, uint8 val)
}
void
M68KAtari::SetHardwareRTC(uint32 seconds)
M68KAtari::SetHardwareRTC(uint64 seconds)
{
#warning M68K: WRITEME
}
+5 -5
View File
@@ -53,7 +53,7 @@ real_time_clock_changed()
static void
rtc_system_to_hw(void)
{
uint32 seconds;
uint64 seconds;
seconds = (arch_rtc_get_system_time_offset(sRealTimeData) + system_time()
+ (sIsGMT ? 0 : sTimezoneOffset)) / 1000000;
@@ -66,7 +66,7 @@ rtc_system_to_hw(void)
static void
rtc_hw_to_system(void)
{
uint32 current_time;
uint64 current_time;
current_time = arch_rtc_get_hw_time();
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
1900 as in POSIX, but 1970.
*/
uint32
uint64
rtc_tm_to_secs(const struct tm *tm)
{
uint32 days;
@@ -191,13 +191,13 @@ rtc_tm_to_secs(const struct tm *tm)
+ 367 * (month - 2 - 12 * ((month - 14) / 12)) / 12
- 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;
}
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;