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

Side by Side Diff: src/base/platform/time.cc

Issue 1125003002: Use CLOCK_REALTIME_COARSE when available. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 7 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
« 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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project 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 "src/base/platform/time.h" 5 #include "src/base/platform/time.h"
6 6
7 #if V8_OS_POSIX 7 #if V8_OS_POSIX
8 #include <fcntl.h> // for O_RDONLY 8 #include <fcntl.h> // for O_RDONLY
9 #include <sys/time.h> 9 #include <sys/time.h>
10 #include <unistd.h> 10 #include <unistd.h>
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 245 }
246 uint64_t us = static_cast<uint64_t>(us_ + kTimeToEpochInMicroseconds) * 10; 246 uint64_t us = static_cast<uint64_t>(us_ + kTimeToEpochInMicroseconds) * 10;
247 ft.dwLowDateTime = static_cast<DWORD>(us); 247 ft.dwLowDateTime = static_cast<DWORD>(us);
248 ft.dwHighDateTime = static_cast<DWORD>(us >> 32); 248 ft.dwHighDateTime = static_cast<DWORD>(us >> 32);
249 return ft; 249 return ft;
250 } 250 }
251 251
252 #elif V8_OS_POSIX 252 #elif V8_OS_POSIX
253 253
254 Time Time::Now() { 254 Time Time::Now() {
255 #if V8_OS_LINUX
Benedikt Meurer 2015/05/06 09:40:34 How about using #ifdef CLOCK_REALTIME_COARSE here?
256 struct timespec ts;
257 static clockid_t clock_id = -1;
Dean McNamee 2015/05/06 09:09:34 I would maybe make a note that clockid_t is define
258 if (clock_id == -1) {
259 // CLOCK_REALTIME_COARSE is not supported on kernels <= 2.6.31.
260 // Probe the kernel to see if it's available and has <= 1 ms resolution.
261 static const clockid_t kClockRealTimeCoarse = 5;
Dean McNamee 2015/05/06 09:09:34 Is there a reason you can't use the CLOCK_REALTIME
262 if (-1 == clock_getres(kClockRealTimeCoarse, &ts) ||
263 ts.tv_nsec > 1000 * 1000 || ts.tv_sec > 0) {
264 clock_id = CLOCK_REALTIME; // Not available or not suitable.
265 } else {
266 clock_id = kClockRealTimeCoarse;
Dean McNamee 2015/05/06 09:09:34 I would make a note, if possible, about what the d
267 }
268 }
269 int result = clock_gettime(clock_id, &ts);
270 DCHECK_EQ(0, result);
271 USE(result);
272 return FromTimespec(ts);
273 #else
255 struct timeval tv; 274 struct timeval tv;
256 int result = gettimeofday(&tv, NULL); 275 int result = gettimeofday(&tv, NULL);
257 DCHECK_EQ(0, result); 276 DCHECK_EQ(0, result);
258 USE(result); 277 USE(result);
259 return FromTimeval(tv); 278 return FromTimeval(tv);
279 #endif
260 } 280 }
261 281
262 282
263 Time Time::NowFromSystemTime() { 283 Time Time::NowFromSystemTime() {
264 return Now(); 284 return Now();
265 } 285 }
266 286
267 287
268 Time Time::FromTimespec(struct timespec ts) { 288 Time Time::FromTimespec(struct timespec ts) {
269 DCHECK(ts.tv_nsec >= 0); 289 DCHECK(ts.tv_nsec >= 0);
(...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 658
639 659
640 // static 660 // static
641 bool TimeTicks::KernelTimestampAvailable() { 661 bool TimeTicks::KernelTimestampAvailable() {
642 return kernel_tick_clock.Pointer()->Available(); 662 return kernel_tick_clock.Pointer()->Available();
643 } 663 }
644 664
645 #endif // V8_OS_WIN 665 #endif // V8_OS_WIN
646 666
647 } } // namespace v8::base 667 } } // namespace v8::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