changeset fe837de10255 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=fe837de10255
description:
base: Revert 9277177eccff and use getenv/setenv for UTC time
This patch reverts changeset 9277177eccff which does not do what it
was intended to do. In essence, we go back to implementing mkutctime
much like the non-standard timegm extension.
diffstat:
src/base/time.cc | 29 +++++++++++++++++++++++++++--
src/dev/sparc/dtod.cc | 3 +--
2 files changed, 28 insertions(+), 4 deletions(-)
diffs (51 lines):
diff -r 533ec854b2f1 -r fe837de10255 src/base/time.cc
--- a/src/base/time.cc Tue Nov 11 14:17:10 2014 -0600
+++ b/src/base/time.cc Wed Nov 12 09:05:20 2014 -0500
@@ -150,7 +150,32 @@
time_t
mkutctime(struct tm *time)
{
- time_t local = mktime(time);
- return mktime(gmtime(&local));
+ // get the current timezone
+ char *tz = getenv("TZ");
+
+ // copy the string as the pointer gets invalidated when updating
+ // the environment
+ if (tz) {
+ tz = strdup(tz);
+ if (!tz) {
+ fatal("Failed to reserve memory for UTC time conversion\n");
+ }
+ }
+
+ // change to UTC and get the time
+ setenv("TZ", "", 1);
+ tzset();
+ time_t ret = mktime(time);
+
+ // restore the timezone again
+ if (tz) {
+ setenv("TZ", tz, 1);
+ free(tz);
+ } else {
+ unsetenv("TZ");
+ }
+ tzset();
+
+ return ret;
}
diff -r 533ec854b2f1 -r fe837de10255 src/dev/sparc/dtod.cc
--- a/src/dev/sparc/dtod.cc Tue Nov 11 14:17:10 2014 -0600
+++ b/src/dev/sparc/dtod.cc Wed Nov 12 09:05:20 2014 -0500
@@ -53,8 +53,7 @@
: BasicPioDevice(p, 0x08)
{
struct tm tm = p->time;
- time_t local = mktime(&tm);
- todTime = mktime(gmtime(&local));
+ todTime = mkutctime(&tm);
DPRINTFN("Real-time clock set to %s\n", asctime(&tm));
DPRINTFN("Real-time clock set to %d\n", todTime);
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev