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

Unified Diff: content/browser/power_profiler/Intel/power_profiler_helper_ia_win.cc

Issue 106223002: chrome power profiler chrome side changes (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/power_profiler/Intel/power_profiler_helper_ia_win.cc
diff --git a/content/browser/power_profiler/Intel/power_profiler_helper_ia_win.cc b/content/browser/power_profiler/Intel/power_profiler_helper_ia_win.cc
new file mode 100644
index 0000000000000000000000000000000000000000..188f64819548dd528f934fa8d4ec2367e114833e
--- /dev/null
+++ b/content/browser/power_profiler/Intel/power_profiler_helper_ia_win.cc
@@ -0,0 +1,83 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/logging.h"
+#include "content/browser/power_profiler/Intel/power_profiler_helper_ia.h"
+
+namespace content {
+
+void PowerProfilerHelperIA::Reset(size_t resolution) {
+}
+
+int PowerProfilerHelperIA::GetData(PowerEvent* data, double* energies,
qsr 2014/01/17 11:50:14 How is this working? You do not have any informati
+ int count) {
+ if (!is_open_ || count < PowerEvent::ID_COUNT)
+ return -1;
+
+ int read_number = 0;
+ energy_lib_.ReadSample();
+
+ base::Time time = base::Time::Now();
+
+ // get SoC package power
+ double package_power = 0.0;
+ double package_energy = 0.0;
+ double power[3];
+ int nData;
+ for (int i = 0; i < sockets_number_; i++) {
+ if (power_msr_ids_[PowerEvent::SOC_PACKAGE] == -1)
+ break;
+
+ bool code = energy_lib_.GetPowerData(i,
+ power_msr_ids_[PowerEvent::SOC_PACKAGE], power, &nData);
+ package_power += power[0];
+ package_energy += power[1];
+ }
+
+ data[read_number].type = PowerEvent::SOC_PACKAGE;
+ data[read_number].value = package_power;
+ data[read_number].time = base::TimeTicks::Now();
+ ++read_number;
+
+ energies[PowerEvent::SOC_PACKAGE] = package_energy;
+
+ return read_number;
+}
+
+bool PowerProfilerHelperIA::Initialize() {
+ if (is_open_)
+ return true;
+
+ if (!energy_lib_.IntelEnergyLibInitialize()) {
+ LOG(ERROR) << "Power profiler helper initialize failed!\r\n";
+ return false;
+ }
+ energy_lib_.GetNumNodes(&sockets_number_);
+
+ const std::wstring package_msr_name_ = L"Processor";
+ const std::wstring cpu_msr_name_ = L"IA";
+
+ int msr_number;
+ energy_lib_.GetNumMsrs(&msr_number);
+
+ int funcID;
+ wchar_t szName[32];
+ for(int i = 0; i < msr_number; i++) {
+ energy_lib_.GetMsrFunc(i, &funcID);
+ energy_lib_.GetMsrName(i, szName);
+
+ if (funcID != 1)
+ continue;
+
+ if (package_msr_name_.compare(szName) == 0)
+ power_msr_ids_[PowerEvent::SOC_PACKAGE] = i;
+ else if (cpu_msr_name_.compare(szName) == 0)
+ power_msr_ids_[PowerEvent::CPU] = i;
+ }
+
+ is_open_ = true;
+ return true;
+}
+
+} // namespace base

Powered by Google App Engine
This is Rietveld 408576698