diff --git a/headers/private/kernel/real_time_clock.h b/headers/private/kernel/real_time_clock.h index f6997a97ff..f208ffc7ce 100644 --- a/headers/private/kernel/real_time_clock.h +++ b/headers/private/kernel/real_time_clock.h @@ -13,13 +13,16 @@ #include +struct kernel_args; + + #define RTC_EPOCH_BASE_YEAR 1970 #ifdef __cplusplus extern "C" { #endif -status_t rtc_init(kernel_args *args); +status_t rtc_init(struct kernel_args *args); bigtime_t rtc_boot_time(void); // Returns the time at which the system was booted in microseconds since Jan 1, 1970 UTC. @@ -28,6 +31,8 @@ bigtime_t rtc_boot_time(void); uint32 rtc_tm_to_secs(const struct tm *t); void rtc_secs_to_tm(uint32 seconds, struct tm *t); +uint32 get_timezone_offset(); + bigtime_t _user_system_time(void); status_t _user_set_real_time_clock(uint32 time); status_t _user_set_timezone(int32 timezoneOffset); diff --git a/src/add-ons/kernel/file_systems/fat/rtc_info.h b/src/add-ons/kernel/file_systems/fat/rtc_info.h deleted file mode 100644 index 4850e42959..0000000000 --- a/src/add-ons/kernel/file_systems/fat/rtc_info.h +++ /dev/null @@ -1,23 +0,0 @@ -/* ++++++++++ - FILE: rtc_info.h - NAME: mani - DATE: 2/1998 - Copyright 1999-2001, Be Incorporated. All Rights Reserved. - This file may be used under the terms of the Be Sample Code License. -+++++ */ - -#ifndef _RTC_INFO_H -#define _RTC_INFO_H - -typedef struct { - uint32 time; - bool is_gmt; - int32 tz_minuteswest; - int32 tz_dsttime; -} rtc_info; - -#define RTC_SETTINGS_FILE "RTC_time_settings" - -extern status_t get_rtc_info(rtc_info *); - -#endif /* _RTC_INFO_H */ diff --git a/src/add-ons/kernel/file_systems/fat/util.c b/src/add-ons/kernel/file_systems/fat/util.c index f7981fab67..d5114f7731 100644 --- a/src/add-ons/kernel/file_systems/fat/util.c +++ b/src/add-ons/kernel/file_systems/fat/util.c @@ -7,12 +7,12 @@ #include #include +#include + #include #include #include -#include "rtc_info.h" - #include "dosfs.h" #include "fat.h" #include "util.h" @@ -72,19 +72,7 @@ get_tzoffset() if (tzoffset != -1) return; - // tzoffset used to be set to a bogus value (timezone offset in seconds), - // we could try to use something like the following ... - // - // int32 tzOffsetInSeconds; - // if (_kern_get_timezone(&tzOffsetInSeconds) < 0) { - // dprintf("error getting timezone offset\n"); - // } else { - // tzoffset = tzOffsetInSeconds / 60; - // } - // - // but I'd rather like to spare us the specific kernel call, - // so we hardcode the timezone (let's see if it makes any difference) - tzoffset = 0; + tzoffset = get_timezone_offset() / 60; } diff --git a/src/system/kernel/real_time_clock.cpp b/src/system/kernel/real_time_clock.cpp index 4578a30531..3a170d49df 100644 --- a/src/system/kernel/real_time_clock.cpp +++ b/src/system/kernel/real_time_clock.cpp @@ -128,6 +128,13 @@ real_time_clock_usecs(void) } +uint32 +get_timezone_offset(void) +{ + return (time_t)(sTimezoneOffset / 1000000LL); +} + + // #pragma mark -