Added Java bindings to async trace functions with track argument
Bug: 22119585
Test: atest TraceDevTest
Change-Id: I0432763837670de97e6771a1d0fda33f8df14f39
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index 6b869f1..231c22b 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -136,6 +136,12 @@
@FastNative
private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
@FastNative
+ private static native void nativeAsyncTraceForTrackBegin(long tag,
+ String trackName, String name, int cookie);
+ @FastNative
+ private static native void nativeAsyncTraceForTrackEnd(long tag,
+ String trackName, String name, int cookie);
+ @FastNative
private static native void nativeInstant(long tag, String name);
@FastNative
private static native void nativeInstantForTrack(long tag, String trackName, String name);
@@ -271,6 +277,47 @@
}
}
+
+ /**
+ * Writes a trace message to indicate that a given section of code has
+ * begun. Must be followed by a call to {@link #asyncTraceForTrackEnd} using the same
+ * tag. This function operates exactly like {@link #asyncTraceBegin(long, String, int)},
+ * except with the inclusion of a track name argument for where this method should appear.
+ *
+ * @param traceTag The trace tag.
+ * @param trackName The track where the event should appear in the trace.
+ * @param methodName The method name to appear in the trace.
+ * @param cookie Unique identifier for distinguishing simultaneous events
+ *
+ * @hide
+ */
+ public static void asyncTraceForTrackBegin(long traceTag,
+ @NonNull String trackName, @NonNull String methodName, int cookie) {
+ if (isTagEnabled(traceTag)) {
+ nativeAsyncTraceForTrackBegin(traceTag, trackName, methodName, cookie);
+ }
+ }
+
+ /**
+ * Writes a trace message to indicate that the current method has ended.
+ * Must be called exactly once for each call to
+ * {@link #asyncTraceForTrackBegin(long, String, String, int)}
+ * using the same tag, track name, name and cookie.
+ *
+ * @param traceTag The trace tag.
+ * @param trackName The track where the event should appear in the trace.
+ * @param methodName The method name to appear in the trace.
+ * @param cookie Unique identifier for distinguishing simultaneous events
+ *
+ * @hide
+ */
+ public static void asyncTraceForTrackEnd(long traceTag,
+ @NonNull String trackName, @NonNull String methodName, int cookie) {
+ if (isTagEnabled(traceTag)) {
+ nativeAsyncTraceForTrackEnd(traceTag, trackName, methodName, cookie);
+ }
+ }
+
/**
* Writes a trace message to indicate that a given section of code was invoked.
*
diff --git a/core/jni/android_os_Trace.cpp b/core/jni/android_os_Trace.cpp
index 85fd5d9..734b6ca 100644
--- a/core/jni/android_os_Trace.cpp
+++ b/core/jni/android_os_Trace.cpp
@@ -82,6 +82,26 @@
});
}
+static void android_os_Trace_nativeAsyncTraceForTrackBegin(JNIEnv* env, jclass, jlong tag,
+ jstring trackStr, jstring nameStr,
+ jint cookie) {
+ withString(env, trackStr, [env, tag, nameStr, cookie](char* track) {
+ withString(env, nameStr, [tag, track, cookie](char* name) {
+ atrace_async_for_track_begin(tag, track, name, cookie);
+ });
+ });
+}
+
+static void android_os_Trace_nativeAsyncTraceForTrackEnd(JNIEnv* env, jclass, jlong tag,
+ jstring trackStr, jstring nameStr,
+ jint cookie) {
+ withString(env, trackStr, [env, tag, nameStr, cookie](char* track) {
+ withString(env, nameStr, [tag, track, cookie](char* name) {
+ atrace_async_for_track_end(tag, track, name, cookie);
+ });
+ });
+}
+
static void android_os_Trace_nativeSetAppTracingAllowed(JNIEnv*, jclass, jboolean allowed) {
atrace_update_tags();
}
@@ -132,6 +152,12 @@
{ "nativeAsyncTraceEnd",
"(JLjava/lang/String;I)V",
(void*)android_os_Trace_nativeAsyncTraceEnd },
+ { "nativeAsyncTraceForTrackBegin",
+ "(JLjava/lang/String;Ljava/lang/String;I)V",
+ (void*)android_os_Trace_nativeAsyncTraceForTrackBegin },
+ { "nativeAsyncTraceForTrackEnd",
+ "(JLjava/lang/String;Ljava/lang/String;I)V",
+ (void*)android_os_Trace_nativeAsyncTraceForTrackEnd },
{ "nativeInstant",
"(JLjava/lang/String;)V",
(void*)android_os_Trace_nativeInstant },