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

Side by Side Diff: runtime/bin/utils_macos.cc

Issue 2750843003: Rename TARGET_OS_* to HOST_OS_*. (Closed)
Patch Set: DEPS Created 3 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
« no previous file with comments | « runtime/bin/utils_linux.cc ('k') | runtime/bin/utils_win.cc » ('j') | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/globals.h" 5 #include "platform/globals.h"
6 #if defined(TARGET_OS_MACOS) 6 #if defined(HOST_OS_MACOS)
7 7
8 #include <errno.h> // NOLINT 8 #include <errno.h> // NOLINT
9 #include <mach/clock.h> // NOLINT 9 #include <mach/clock.h> // NOLINT
10 #include <mach/mach.h> // NOLINT 10 #include <mach/mach.h> // NOLINT
11 #include <mach/mach_time.h> // NOLINT 11 #include <mach/mach_time.h> // NOLINT
12 #include <netdb.h> // NOLINT 12 #include <netdb.h> // NOLINT
13 #if TARGET_OS_IOS 13 #if HOST_OS_IOS
14 #include <sys/sysctl.h> // NOLINT 14 #include <sys/sysctl.h> // NOLINT
15 #endif 15 #endif
16 #include <sys/time.h> // NOLINT 16 #include <sys/time.h> // NOLINT
17 #include <time.h> // NOLINT 17 #include <time.h> // NOLINT
18 18
19 #include "bin/utils.h" 19 #include "bin/utils.h"
20 #include "platform/assert.h" 20 #include "platform/assert.h"
21 #include "platform/utils.h" 21 #include "platform/utils.h"
22 22
23 namespace dart { 23 namespace dart {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 kern_return_t kr = mach_timebase_info(&timebase_info); 117 kern_return_t kr = mach_timebase_info(&timebase_info);
118 ASSERT(KERN_SUCCESS == kr); 118 ASSERT(KERN_SUCCESS == kr);
119 } 119 }
120 120
121 121
122 int64_t TimerUtils::GetCurrentMonotonicMillis() { 122 int64_t TimerUtils::GetCurrentMonotonicMillis() {
123 return GetCurrentMonotonicMicros() / 1000; 123 return GetCurrentMonotonicMicros() / 1000;
124 } 124 }
125 125
126 126
127 #if TARGET_OS_IOS 127 #if HOST_OS_IOS
128 static int64_t GetCurrentTimeMicros() { 128 static int64_t GetCurrentTimeMicros() {
129 // gettimeofday has microsecond resolution. 129 // gettimeofday has microsecond resolution.
130 struct timeval tv; 130 struct timeval tv;
131 if (gettimeofday(&tv, NULL) < 0) { 131 if (gettimeofday(&tv, NULL) < 0) {
132 UNREACHABLE(); 132 UNREACHABLE();
133 return 0; 133 return 0;
134 } 134 }
135 return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec; 135 return (static_cast<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
136 } 136 }
137 #endif // TARGET_OS_IOS 137 #endif // HOST_OS_IOS
138 138
139 139
140 int64_t TimerUtils::GetCurrentMonotonicMicros() { 140 int64_t TimerUtils::GetCurrentMonotonicMicros() {
141 #if TARGET_OS_IOS 141 #if HOST_OS_IOS
142 // On iOS mach_absolute_time stops while the device is sleeping. Instead use 142 // On iOS mach_absolute_time stops while the device is sleeping. Instead use
143 // now - KERN_BOOTTIME to get a time difference that is not impacted by clock 143 // now - KERN_BOOTTIME to get a time difference that is not impacted by clock
144 // changes. KERN_BOOTTIME will be updated by the system whenever the system 144 // changes. KERN_BOOTTIME will be updated by the system whenever the system
145 // clock change. 145 // clock change.
146 struct timeval boottime; 146 struct timeval boottime;
147 int mib[2] = {CTL_KERN, KERN_BOOTTIME}; 147 int mib[2] = {CTL_KERN, KERN_BOOTTIME};
148 size_t size = sizeof(boottime); 148 size_t size = sizeof(boottime);
149 int kr = sysctl(mib, sizeof(mib) / sizeof(mib[0]), &boottime, &size, NULL, 0); 149 int kr = sysctl(mib, sizeof(mib) / sizeof(mib[0]), &boottime, &size, NULL, 0);
150 ASSERT(KERN_SUCCESS == kr); 150 ASSERT(KERN_SUCCESS == kr);
151 int64_t now = GetCurrentTimeMicros(); 151 int64_t now = GetCurrentTimeMicros();
152 int64_t origin = boottime.tv_sec * kMicrosecondsPerSecond; 152 int64_t origin = boottime.tv_sec * kMicrosecondsPerSecond;
153 origin += boottime.tv_usec; 153 origin += boottime.tv_usec;
154 return now - origin; 154 return now - origin;
155 #else 155 #else
156 ASSERT(timebase_info.denom != 0); 156 ASSERT(timebase_info.denom != 0);
157 // timebase_info converts absolute time tick units into nanoseconds. Convert 157 // timebase_info converts absolute time tick units into nanoseconds. Convert
158 // to microseconds. 158 // to microseconds.
159 int64_t result = mach_absolute_time() / kNanosecondsPerMicrosecond; 159 int64_t result = mach_absolute_time() / kNanosecondsPerMicrosecond;
160 result *= timebase_info.numer; 160 result *= timebase_info.numer;
161 result /= timebase_info.denom; 161 result /= timebase_info.denom;
162 return result; 162 return result;
163 #endif // TARGET_OS_IOS 163 #endif // HOST_OS_IOS
164 } 164 }
165 165
166 166
167 void TimerUtils::Sleep(int64_t millis) { 167 void TimerUtils::Sleep(int64_t millis) {
168 struct timespec req; // requested. 168 struct timespec req; // requested.
169 struct timespec rem; // remainder. 169 struct timespec rem; // remainder.
170 int64_t micros = millis * kMicrosecondsPerMillisecond; 170 int64_t micros = millis * kMicrosecondsPerMillisecond;
171 int64_t seconds = micros / kMicrosecondsPerSecond; 171 int64_t seconds = micros / kMicrosecondsPerSecond;
172 micros = micros - seconds * kMicrosecondsPerSecond; 172 micros = micros - seconds * kMicrosecondsPerSecond;
173 int64_t nanos = micros * kNanosecondsPerMicrosecond; 173 int64_t nanos = micros * kNanosecondsPerMicrosecond;
174 req.tv_sec = seconds; 174 req.tv_sec = seconds;
175 req.tv_nsec = nanos; 175 req.tv_nsec = nanos;
176 while (true) { 176 while (true) {
177 int r = nanosleep(&req, &rem); 177 int r = nanosleep(&req, &rem);
178 if (r == 0) { 178 if (r == 0) {
179 break; 179 break;
180 } 180 }
181 // We should only ever see an interrupt error. 181 // We should only ever see an interrupt error.
182 ASSERT(errno == EINTR); 182 ASSERT(errno == EINTR);
183 // Copy remainder into requested and repeat. 183 // Copy remainder into requested and repeat.
184 req = rem; 184 req = rem;
185 } 185 }
186 } 186 }
187 187
188 } // namespace bin 188 } // namespace bin
189 } // namespace dart 189 } // namespace dart
190 190
191 #endif // defined(TARGET_OS_MACOS) 191 #endif // defined(HOST_OS_MACOS)
OLDNEW
« no previous file with comments | « runtime/bin/utils_linux.cc ('k') | runtime/bin/utils_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698