mirror of
https://github.com/reactos/reactos.git
synced 2025-08-08 15:53:08 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
97
boot/armllb/hw/time.c
Normal file
97
boot/armllb/hw/time.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* PROJECT: ReactOS Boot Loader
|
||||
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
||||
* FILE: boot/armllb/hw/time.c
|
||||
* PURPOSE: LLB Time Routines
|
||||
* PROGRAMMERS: ReactOS Portable Systems Group
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
#define LEAPS_THRU_END_OF(y) ((y)/4 - (y)/100 + (y)/400)
|
||||
|
||||
UCHAR LlbDaysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||
|
||||
#ifndef _ZOOM2_
|
||||
TIMEINFO LlbTime;
|
||||
#else
|
||||
extern TIMEINFO LlbTime;
|
||||
#endif
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
LlbIsLeapYear(IN ULONG Year)
|
||||
{
|
||||
/* Every 4, 100, or 400 years */
|
||||
return (!(Year % 4) && (Year % 100)) || !(Year % 400);
|
||||
}
|
||||
|
||||
ULONG
|
||||
NTAPI
|
||||
LlbDayOfMonth(IN ULONG Month,
|
||||
IN ULONG Year)
|
||||
{
|
||||
/* Check how many days a month has, accounting for leap yearS */
|
||||
return LlbDaysInMonth[Month] + (LlbIsLeapYear(Year) && Month == 1);
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
LlbConvertRtcTime(IN ULONG RtcTime,
|
||||
OUT TIMEINFO* TimeInfo)
|
||||
{
|
||||
ULONG Month, Year, Days, DaysLeft;
|
||||
|
||||
/* Count the days, keep the minutes */
|
||||
Days = RtcTime / 86400;
|
||||
RtcTime -= Days * 86400;
|
||||
|
||||
/* Get the year, based on days since 1970 */
|
||||
Year = 1970 + Days / 365;
|
||||
|
||||
/* Account for leap years which changed the number of days/year */
|
||||
Days -= (Year - 1970) * 365 + LEAPS_THRU_END_OF(Year - 1) - LEAPS_THRU_END_OF(1970 - 1);
|
||||
if (Days < 0)
|
||||
{
|
||||
/* We hit a leap year, so fixup the math */
|
||||
Year--;
|
||||
Days += 365 + LlbIsLeapYear(Year);
|
||||
}
|
||||
|
||||
/* Count months */
|
||||
for (Month = 0; Month < 11; Month++)
|
||||
{
|
||||
/* How many days in this month? */
|
||||
DaysLeft = Days - LlbDayOfMonth(Month, Year);
|
||||
if (DaysLeft < 0) break;
|
||||
|
||||
/* How many days left total? */
|
||||
Days = DaysLeft;
|
||||
}
|
||||
|
||||
/* Write the structure */
|
||||
TimeInfo->Year = Year;
|
||||
TimeInfo->Day = Days + 1;
|
||||
TimeInfo->Month = Month + 1;
|
||||
TimeInfo->Hour = RtcTime / 3600;
|
||||
RtcTime -= TimeInfo->Hour * 3600;
|
||||
TimeInfo->Minute = RtcTime / 60;
|
||||
TimeInfo->Second = RtcTime - TimeInfo->Minute * 60;
|
||||
}
|
||||
|
||||
TIMEINFO*
|
||||
NTAPI
|
||||
LlbGetTime(VOID)
|
||||
{
|
||||
ULONG RtcTime;
|
||||
|
||||
/* Read RTC time */
|
||||
RtcTime = LlbHwRtcRead();
|
||||
#ifndef _ZOOM2_
|
||||
/* Convert it */
|
||||
LlbConvertRtcTime(RtcTime, &LlbTime);
|
||||
#endif
|
||||
return &LlbTime;
|
||||
}
|
||||
|
||||
/* EOF */
|
Loading…
Add table
Add a link
Reference in a new issue