summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Rafal Slawik <rslawik@google.com> 2021-02-01 10:28:02 +0000
committer Rafal Slawik <rslawik@google.com> 2021-02-03 10:22:44 +0000
commitf280c6aba50b43edd1e5a0d97294d41cc70ac3eb (patch)
tree35c6646db424679940b2b777c1195f307046cf17
parent173704e599de3b6eecfc3fdfc1261291635bfa12 (diff)
Check if CPU time tracking is expected to work
Register the puller for CpuTimePerClusterFreq only if CPU time tracking is supported. This avoid passing all zero times around and recording "no data" state. Depends on https://r.android.com/1566193 Bug: 174245730 Test: cmd stats pull-source 10095 Test: atest CpuStatsTests Change-Id: Ifb3da84711b111eabc4af7a166dec794278b4a02
-rw-r--r--core/java/com/android/internal/os/KernelCpuTotalBpfMapReader.java5
-rw-r--r--core/jni/com_android_internal_os_KernelCpuTotalBpfMapReader.cpp5
2 files changed, 6 insertions, 4 deletions
diff --git a/core/java/com/android/internal/os/KernelCpuTotalBpfMapReader.java b/core/java/com/android/internal/os/KernelCpuTotalBpfMapReader.java
index fa552e3603c6..50331e3338dc 100644
--- a/core/java/com/android/internal/os/KernelCpuTotalBpfMapReader.java
+++ b/core/java/com/android/internal/os/KernelCpuTotalBpfMapReader.java
@@ -24,10 +24,7 @@ public final class KernelCpuTotalBpfMapReader {
}
/** Returns whether total CPU time is measured. */
- public static boolean isSupported() {
- // TODO(b/174245730): Implement this check.
- return true;
- }
+ public static native boolean isSupported();
/** Reads total CPU time from bpf map. */
public static native boolean read(Callback callback);
diff --git a/core/jni/com_android_internal_os_KernelCpuTotalBpfMapReader.cpp b/core/jni/com_android_internal_os_KernelCpuTotalBpfMapReader.cpp
index 72492381e31a..d8446ca2881d 100644
--- a/core/jni/com_android_internal_os_KernelCpuTotalBpfMapReader.cpp
+++ b/core/jni/com_android_internal_os_KernelCpuTotalBpfMapReader.cpp
@@ -20,6 +20,10 @@
namespace android {
+static jboolean KernelCpuTotalBpfMapReader_isSupported(JNIEnv *, jobject) {
+ return android::bpf::isTrackingUidTimesSupported() ? JNI_TRUE : JNI_FALSE;
+}
+
static jboolean KernelCpuTotalBpfMapReader_read(JNIEnv *env, jobject, jobject callback) {
jclass callbackClass = env->GetObjectClass(callback);
jmethodID callbackMethod = env->GetMethodID(callbackClass, "accept", "(IIJ)V");
@@ -47,6 +51,7 @@ static jboolean KernelCpuTotalBpfMapReader_read(JNIEnv *env, jobject, jobject ca
static const JNINativeMethod methods[] = {
{"read", "(Lcom/android/internal/os/KernelCpuTotalBpfMapReader$Callback;)Z",
(void *)KernelCpuTotalBpfMapReader_read},
+ {"isSupported", "()Z", (void *)KernelCpuTotalBpfMapReader_isSupported},
};
int register_com_android_internal_os_KernelCpuTotalBpfMapReader(JNIEnv *env) {