Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: time_posix.cc

Issue 6683025: Make time_posix.cc build in Native Client... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/base/
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/time.h" 5 #include "base/time.h"
6 6
7 #include <sys/time.h> 7 #include <sys/time.h>
8 #include <time.h> 8 #include <time.h>
9 9
10 #include <limits> 10 #include <limits>
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 struct tm timestruct; 102 struct tm timestruct;
103 timestruct.tm_sec = exploded.second; 103 timestruct.tm_sec = exploded.second;
104 timestruct.tm_min = exploded.minute; 104 timestruct.tm_min = exploded.minute;
105 timestruct.tm_hour = exploded.hour; 105 timestruct.tm_hour = exploded.hour;
106 timestruct.tm_mday = exploded.day_of_month; 106 timestruct.tm_mday = exploded.day_of_month;
107 timestruct.tm_mon = exploded.month - 1; 107 timestruct.tm_mon = exploded.month - 1;
108 timestruct.tm_year = exploded.year - 1900; 108 timestruct.tm_year = exploded.year - 1900;
109 timestruct.tm_wday = exploded.day_of_week; // mktime/timegm ignore this 109 timestruct.tm_wday = exploded.day_of_week; // mktime/timegm ignore this
110 timestruct.tm_yday = 0; // mktime/timegm ignore this 110 timestruct.tm_yday = 0; // mktime/timegm ignore this
111 timestruct.tm_isdst = -1; // attempt to figure it out 111 timestruct.tm_isdst = -1; // attempt to figure it out
112 #if !defined(OS_NACL)
112 timestruct.tm_gmtoff = 0; // not a POSIX field, so mktime/timegm ignore 113 timestruct.tm_gmtoff = 0; // not a POSIX field, so mktime/timegm ignore
113 timestruct.tm_zone = NULL; // not a POSIX field, so mktime/timegm ignore 114 timestruct.tm_zone = NULL; // not a POSIX field, so mktime/timegm ignore
115 #endif
114 116
115 time_t seconds; 117 time_t seconds;
116 if (is_local) 118 if (is_local)
117 seconds = mktime(&timestruct); 119 seconds = mktime(&timestruct);
118 else 120 else
119 seconds = timegm(&timestruct); 121 seconds = timegm(&timestruct);
120 122
121 int64 milliseconds; 123 int64 milliseconds;
122 // Handle overflow. Clamping the range to what mktime and timegm might 124 // Handle overflow. Clamping the range to what mktime and timegm might
123 // return is the best that can be done here. It's not ideal, but it's better 125 // return is the best that can be done here. It's not ideal, but it's better
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 return TimeTicks(); 174 return TimeTicks();
173 } 175 }
174 176
175 absolute_micro = 177 absolute_micro =
176 (static_cast<int64>(ts.tv_sec) * Time::kMicrosecondsPerSecond) + 178 (static_cast<int64>(ts.tv_sec) * Time::kMicrosecondsPerSecond) +
177 (static_cast<int64>(ts.tv_nsec) / Time::kNanosecondsPerMicrosecond); 179 (static_cast<int64>(ts.tv_nsec) / Time::kNanosecondsPerMicrosecond);
178 180
179 return TimeTicks(absolute_micro); 181 return TimeTicks(absolute_micro);
180 } 182 }
181 183
184 #elif defined(OS_NACL)
185
186 TimeTicks TimeTicks::Now() {
187 // Sadly, Native Client does not have _POSIX_TIMERS enabled in sys/features.h
188 // Apparently NaCl only has CLOCK_REALTIME:
189 // http://code.google.com/p/nativeclient/issues/detail?id=1159
190 return TimeTicks(clock());
191 }
192
182 #else // _POSIX_MONOTONIC_CLOCK 193 #else // _POSIX_MONOTONIC_CLOCK
183 #error No usable tick clock function on this platform. 194 #error No usable tick clock function on this platform.
184 #endif // _POSIX_MONOTONIC_CLOCK 195 #endif // _POSIX_MONOTONIC_CLOCK
185 196
186 // static 197 // static
187 TimeTicks TimeTicks::HighResNow() { 198 TimeTicks TimeTicks::HighResNow() {
188 return Now(); 199 return Now();
189 } 200 }
190 201
191 #endif // !OS_MACOSX 202 #endif // !OS_MACOSX
192 203
193 struct timeval Time::ToTimeVal() const { 204 struct timeval Time::ToTimeVal() const {
194 struct timeval result; 205 struct timeval result;
195 int64 us = us_ - kTimeTToMicrosecondsOffset; 206 int64 us = us_ - kTimeTToMicrosecondsOffset;
196 result.tv_sec = us / Time::kMicrosecondsPerSecond; 207 result.tv_sec = us / Time::kMicrosecondsPerSecond;
197 result.tv_usec = us % Time::kMicrosecondsPerSecond; 208 result.tv_usec = us % Time::kMicrosecondsPerSecond;
198 return result; 209 return result;
199 } 210 }
200 211
201 } // namespace base 212 } // namespace base
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698