Improved time functions.

svn path=/trunk/; revision=462
This commit is contained in:
Eric Kohl 1999-05-13 14:52:35 +00:00
parent e1e75da515
commit 9bdf8fd314
3 changed files with 36 additions and 6 deletions

View file

@ -14,7 +14,14 @@
#include <internal/debug.h>
/* FUNCTIONS *****************************************************************/
#define TICKSPERMINUTE 600000000
/* GLOBALS ******************************************************************/
static LONG lTimeZoneBias = 0; /* bias[minutes] = UTC - local time */
/* FUNCTIONS ****************************************************************/
NTSTATUS STDCALL NtSetSystemTime(IN PLARGE_INTEGER SystemTime,
IN PLARGE_INTEGER NewSystemTime OPTIONAL)
@ -35,17 +42,21 @@ NTSTATUS STDCALL NtQuerySystemTime (OUT TIME *CurrentTime)
NTSTATUS STDCALL ZwQuerySystemTime (OUT TIME *CurrentTime)
{
UNIMPLEMENTED;
KeQuerySystemTime((PLARGE_INTEGER)CurrentTime);
return STATUS_SUCCESS;
// UNIMPLEMENTED;
}
VOID ExLocalTimeToSystemTime(PLARGE_INTEGER LocalTime,
PLARGE_INTEGER SystemTime)
{
UNIMPLEMENTED;
SystemTime->QuadPart = LocalTime->QuadPart +
lTimeZoneBias * TICKSPERMINUTE;
}
VOID ExSystemTimeToLocalTime(PLARGE_INTEGER SystemTime,
PLARGE_INTEGER LocalTime)
{
UNIMPLEMENTED;
LocalTime->QuadPart = SystemTime->QuadPart -
lTimeZoneBias * TICKSPERMINUTE;
}

View file

@ -49,6 +49,10 @@ void HalQueryRealTimeClock(PTIME_FIELDS pTime)
pTime->Year=BCD_INT(inb_p(0x71));
if(pTime->Year>80) pTime->Year +=1900;
else pTime->Year +=2000;
//FIXME pTime->MilliSeconds=
pTime->Milliseconds=0;
}
void HalSetRealTimeClock(PTIME_FIELDS pTime)
{
}

View file

@ -50,6 +50,7 @@ extern inline unsigned int linear_to_physical(unsigned int x)
/*
* Current time
*/
static unsigned long long boot_time = 0;
static unsigned long long system_time = 0;
/*
@ -571,10 +572,24 @@ VOID KeInitializeTimerImpl(VOID)
* NOTE: This is only called once from main()
*/
{
TIME_FIELDS TimeFields;
LARGE_INTEGER SystemBootTime;
InitializeListHead(&timer_list_head);
KeInitializeSpinLock(&timer_list_lock);
/*
* Calculate the starting time for the system clock
*/
HalQueryRealTimeClock(&TimeFields);
DbgPrint("Date: %d.%d.%d\nTime: %d:%d:%d\n",
TimeFields.Day,
TimeFields.Month,
TimeFields.Year,
TimeFields.Hour,
TimeFields.Minute,
TimeFields.Second);
RtlTimeFieldsToTime(&TimeFields, &SystemBootTime);
boot_time=SystemBootTime.QuadPart;
system_time=boot_time;
}