diff options
Diffstat (limited to 'base/android/sys_utils.cc')
-rw-r--r-- | base/android/sys_utils.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/base/android/sys_utils.cc b/base/android/sys_utils.cc new file mode 100644 index 0000000000..7872b2f7d5 --- /dev/null +++ b/base/android/sys_utils.cc @@ -0,0 +1,51 @@ +// 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/android/sys_utils.h" + +#include <memory> + +#include "base/android/build_info.h" +#include "base/process/process_metrics.h" +#include "base/sys_info.h" +#include "base/trace_event/trace_event.h" +#include "jni/SysUtils_jni.h" + +namespace base { +namespace android { + +bool SysUtils::IsLowEndDeviceFromJni() { + JNIEnv* env = AttachCurrentThread(); + return Java_SysUtils_isLowEndDevice(env); +} + +bool SysUtils::IsCurrentlyLowMemory() { + JNIEnv* env = AttachCurrentThread(); + return Java_SysUtils_isCurrentlyLowMemory(env); +} + +// Logs the number of minor / major page faults to tracing (and also the time to +// collect) the metrics. Does nothing if tracing is not enabled. +static void JNI_SysUtils_LogPageFaultCountToTracing( + JNIEnv* env, + const base::android::JavaParamRef<jclass>& jcaller) { + // This is racy, but we are OK losing data, and collecting it is potentially + // expensive (reading and parsing a file). + bool enabled; + TRACE_EVENT_CATEGORY_GROUP_ENABLED("startup", &enabled); + if (!enabled) + return; + TRACE_EVENT_BEGIN2("memory", "CollectPageFaultCount", "minor", 0, "major", 0); + std::unique_ptr<base::ProcessMetrics> process_metrics( + base::ProcessMetrics::CreateProcessMetrics( + base::GetCurrentProcessHandle())); + base::PageFaultCounts counts; + process_metrics->GetPageFaultCounts(&counts); + TRACE_EVENT_END2("memory", "CollectPageFaults", "minor", counts.minor, + "major", counts.major); +} + +} // namespace android + +} // namespace base |