| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/chrome_watcher/system_load_estimator.h" | 5 #include "chrome/chrome_watcher/system_load_estimator.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/threading/platform_thread.h" | 11 #include "base/threading/platform_thread.h" |
| 12 | 12 |
| 13 namespace chrome_watcher { | 13 namespace chrome_watcher { |
| 14 namespace { | 14 namespace { |
| 15 | 15 |
| 16 using CounterHandle = SystemLoadEstimator::CounterHandle; | 16 using CounterHandle = SystemLoadEstimator::CounterHandle; |
| 17 | 17 |
| 18 uint64_t FileTimeToUInt64(FILETIME time) { | 18 uint64_t FileTimeToUInt64(FILETIME time) { |
| 19 ULARGE_INTEGER output = {}; | 19 ULARGE_INTEGER output = {}; |
| 20 output.LowPart = time.dwLowDateTime; | 20 output.LowPart = time.dwLowDateTime; |
| 21 output.HighPart = time.dwHighDateTime; | 21 output.HighPart = time.dwHighDateTime; |
| 22 return static_cast<uint64_t>(output.QuadPart); | 22 return static_cast<uint64_t>(output.QuadPart); |
| 23 } | 23 } |
| 24 | 24 |
| 25 CounterHandle AddPdhCounter(PDH_HQUERY query, | 25 CounterHandle AddPdhCounter(PDH_HQUERY query, |
| 26 wchar_t* object_name, | 26 const wchar_t* object_name, |
| 27 wchar_t* counter_name) { | 27 const wchar_t* counter_name) { |
| 28 DCHECK(counter_name); | 28 DCHECK(counter_name); |
| 29 | 29 |
| 30 // Get the counter's path. | 30 // Get the counter's path. |
| 31 PDH_COUNTER_PATH_ELEMENTS path_elements = { | 31 PDH_COUNTER_PATH_ELEMENTS path_elements = { |
| 32 nullptr, object_name, nullptr, nullptr, 0, counter_name}; | 32 nullptr, const_cast<LPTSTR>(object_name), nullptr, nullptr, |
| 33 0, const_cast<LPTSTR>(counter_name)}; |
| 33 std::unique_ptr<wchar_t[]> counter_path(new wchar_t[PDH_MAX_COUNTER_PATH]); | 34 std::unique_ptr<wchar_t[]> counter_path(new wchar_t[PDH_MAX_COUNTER_PATH]); |
| 34 DWORD path_len = PDH_MAX_COUNTER_PATH; | 35 DWORD path_len = PDH_MAX_COUNTER_PATH; |
| 35 | 36 |
| 36 PDH_STATUS status = | 37 PDH_STATUS status = |
| 37 ::PdhMakeCounterPath(&path_elements, counter_path.get(), &path_len, 0); | 38 ::PdhMakeCounterPath(&path_elements, counter_path.get(), &path_len, 0); |
| 38 if (status != ERROR_SUCCESS) | 39 if (status != ERROR_SUCCESS) |
| 39 return CounterHandle(); | 40 return CounterHandle(); |
| 40 | 41 |
| 41 // Add the counter. | 42 // Add the counter. |
| 42 HCOUNTER counter_raw = nullptr; | 43 HCOUNTER counter_raw = nullptr; |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 if (!::GetSystemTimes(&time_idle, &time_kernel, &time_user)) | 168 if (!::GetSystemTimes(&time_idle, &time_kernel, &time_user)) |
| 168 return false; | 169 return false; |
| 169 | 170 |
| 170 // Note: kernel time includes idle time. | 171 // Note: kernel time includes idle time. |
| 171 *idle = FileTimeToUInt64(time_idle); | 172 *idle = FileTimeToUInt64(time_idle); |
| 172 *total = FileTimeToUInt64(time_kernel) + FileTimeToUInt64(time_user); | 173 *total = FileTimeToUInt64(time_kernel) + FileTimeToUInt64(time_user); |
| 173 return true; | 174 return true; |
| 174 } | 175 } |
| 175 | 176 |
| 176 } // namespace chrome_watcher | 177 } // namespace chrome_watcher |
| OLD | NEW |