summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Zim <zezeozue@google.com> 2024-03-14 17:26:07 +0000
committer Zim <zezeozue@google.com> 2024-03-14 18:33:59 +0000
commit500d40b68d14d010a3da1f1f5345b3aa128aaf3d (patch)
tree1b4db9253d3f3b653408545b305b710e00646baf
parent7e37a4b06f652f8daf920f888715c9f8736dae15 (diff)
Fix check for whether a trace tag is enabled
With the introduction of libperfetto_tracing, we need to check both perfetto track_events and atrace categories to determine if a trace tag is enabled. Perfetto SDK doesn't expose a list (or bitmask) of all enabled categories, but we can check if a specific category is enabled. Rewrote the internal impl for Trace#isTagEnabled to pass the tag into native and return a boolean instead of getting all the enabled tags from native and checking in Java. Test: atest libtracing_perfetto_tests Bug: 303199244 Change-Id: I4aa67bdcd86f15ec723955bb3619015fcb16063e
-rw-r--r--core/java/android/os/Trace.java9
-rw-r--r--core/jni/android_os_Trace.cpp6
2 files changed, 7 insertions, 8 deletions
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index bebb912bd069..edb3a641f107 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -125,15 +125,15 @@ public final class Trace {
@UnsupportedAppUsage
@CriticalNative
@android.ravenwood.annotation.RavenwoodReplace
- private static native long nativeGetEnabledTags();
+ private static native boolean nativeIsTagEnabled(long tag);
@android.ravenwood.annotation.RavenwoodReplace
private static native void nativeSetAppTracingAllowed(boolean allowed);
@android.ravenwood.annotation.RavenwoodReplace
private static native void nativeSetTracingEnabled(boolean allowed);
- private static long nativeGetEnabledTags$ravenwood() {
+ private static boolean nativeIsTagEnabled$ravenwood(long traceTag) {
// Tracing currently completely disabled under Ravenwood
- return 0;
+ return false;
}
private static void nativeSetAppTracingAllowed$ravenwood(boolean allowed) {
@@ -181,8 +181,7 @@ public final class Trace {
@UnsupportedAppUsage
@SystemApi(client = MODULE_LIBRARIES)
public static boolean isTagEnabled(long traceTag) {
- long tags = nativeGetEnabledTags();
- return (tags & traceTag) != 0;
+ return nativeIsTagEnabled(traceTag);
}
/**
diff --git a/core/jni/android_os_Trace.cpp b/core/jni/android_os_Trace.cpp
index b579daf505e7..422bc1e8b59f 100644
--- a/core/jni/android_os_Trace.cpp
+++ b/core/jni/android_os_Trace.cpp
@@ -124,8 +124,8 @@ static void android_os_Trace_nativeInstantForTrack(JNIEnv* env, jclass,
});
}
-static jlong android_os_Trace_nativeGetEnabledTags(JNIEnv* env) {
- return tracing_perfetto::getEnabledCategories();
+static jboolean android_os_Trace_nativeIsTagEnabled(JNIEnv* env, jlong tag) {
+ return tracing_perfetto::isTagEnabled(tag);
}
static void android_os_Trace_nativeRegisterWithPerfetto(JNIEnv* env) {
@@ -157,7 +157,7 @@ static const JNINativeMethod gTraceMethods[] = {
{"nativeRegisterWithPerfetto", "()V", (void*)android_os_Trace_nativeRegisterWithPerfetto},
// ----------- @CriticalNative ----------------
- {"nativeGetEnabledTags", "()J", (void*)android_os_Trace_nativeGetEnabledTags},
+ {"nativeIsTagEnabled", "(J)Z", (void*)android_os_Trace_nativeIsTagEnabled},
};
int register_android_os_Trace(JNIEnv* env) {