2002-10-05 21:07:03 +04:00
|
|
|
/*
|
2003-10-28 16:29:29 +03:00
|
|
|
** Copyright 2002-2003, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
2002-10-05 21:07:03 +04:00
|
|
|
** Distributed under the terms of the OpenBeOS License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include <OS.h>
|
|
|
|
#include "syscalls.h"
|
|
|
|
|
2004-11-06 20:34:39 +03:00
|
|
|
static area_id sCloneRtcArea;
|
|
|
|
static volatile bigtime_t *sBootTime = NULL;
|
|
|
|
|
|
|
|
|
|
|
|
status_t
|
|
|
|
setup_rtc_area()
|
|
|
|
{
|
|
|
|
area_id rtcArea = find_area("rtc_region");
|
|
|
|
if (rtcArea < 0) {
|
|
|
|
printf("setup_rtc_area: error finding rtc_region %s\n",
|
|
|
|
strerror(rtcArea));
|
|
|
|
}
|
|
|
|
sCloneRtcArea = clone_area("cloned_rtc_region", (void**)&sBootTime,
|
|
|
|
B_ANY_ADDRESS, B_READ_AREA, rtcArea);
|
|
|
|
if (sCloneRtcArea < 0) {
|
|
|
|
printf("setup_rtc_area: error cloning rtc_region\n");
|
|
|
|
return sCloneRtcArea;
|
|
|
|
}
|
|
|
|
|
|
|
|
return B_OK;
|
|
|
|
}
|
|
|
|
|
2002-10-05 21:07:03 +04:00
|
|
|
|
|
|
|
uint32
|
|
|
|
real_time_clock(void)
|
|
|
|
{
|
2004-11-06 20:34:39 +03:00
|
|
|
if (!sBootTime)
|
|
|
|
setup_rtc_area();
|
|
|
|
//return (*sBootTime + system_time()) / 1000000;
|
2002-10-05 21:07:03 +04:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
2003-10-28 16:13:35 +03:00
|
|
|
set_real_time_clock(uint32 secs)
|
2002-10-05 21:07:03 +04:00
|
|
|
{
|
2003-10-28 16:29:29 +03:00
|
|
|
_kern_set_real_time_clock(secs);
|
2002-10-05 21:07:03 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bigtime_t
|
|
|
|
real_time_clock_usecs(void)
|
|
|
|
{
|
2004-11-06 20:34:39 +03:00
|
|
|
if (!sBootTime)
|
|
|
|
setup_rtc_area();
|
|
|
|
//return *sBootTime + system_time();
|
2002-10-05 21:07:03 +04:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
status_t
|
|
|
|
set_timezone(char *timezone)
|
|
|
|
{
|
|
|
|
// ToDo: set_timezone()
|
|
|
|
return B_ERROR;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-10-17 23:30:59 +04:00
|
|
|
/*
|
|
|
|
// ToDo: currently defined in atomic.S - but should be in its own file time.S
|
2002-10-05 21:07:03 +04:00
|
|
|
bigtime_t
|
|
|
|
system_time(void)
|
|
|
|
{
|
2002-10-17 23:30:59 +04:00
|
|
|
// time since booting in microseconds
|
2002-10-05 21:07:03 +04:00
|
|
|
return sys_system_time();
|
|
|
|
}
|
2002-10-17 23:30:59 +04:00
|
|
|
*/
|
2002-10-05 21:07:03 +04:00
|
|
|
|
|
|
|
|
|
|
|
bigtime_t
|
|
|
|
set_alarm(bigtime_t when, uint32 flags)
|
|
|
|
{
|
|
|
|
// ToDo: set_alarm()
|
|
|
|
return B_ERROR;
|
|
|
|
}
|