diff options
| -rw-r--r-- | TRACE_OWNERS | 5 | ||||
| -rw-r--r-- | core/java/android/os/OWNERS | 3 | ||||
| -rw-r--r-- | core/java/android/os/Trace.java | 47 | ||||
| -rw-r--r-- | core/jni/OWNERS | 1 | ||||
| -rw-r--r-- | core/jni/android_os_Trace.cpp | 26 |
5 files changed, 82 insertions, 0 deletions
diff --git a/TRACE_OWNERS b/TRACE_OWNERS new file mode 100644 index 000000000000..f746a162bc8f --- /dev/null +++ b/TRACE_OWNERS @@ -0,0 +1,5 @@ +# OWNERS of Trace-related files +primiano@google.com +timmurray@google.com +jjaggi@google.com +jreck@google.com diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS index 8e5ed8f6e578..1f3108a1f04b 100644 --- a/core/java/android/os/OWNERS +++ b/core/java/android/os/OWNERS @@ -66,3 +66,6 @@ per-file *UpdateEngine* = file:/platform/system/update_engine:/OWNERS # VINTF per-file Vintf* = file:/platform/system/libvintf:/OWNERS + +# Tracing +per-file Trace.java = file:/TRACE_OWNERS diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java index 6b869f13059d..231c22b03eb8 100644 --- a/core/java/android/os/Trace.java +++ b/core/java/android/os/Trace.java @@ -136,6 +136,12 @@ public final class Trace { @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 @@ public final class Trace { } } + + /** + * 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/OWNERS b/core/jni/OWNERS index 8cac2e8c2b24..626a2124a70b 100644 --- a/core/jni/OWNERS +++ b/core/jni/OWNERS @@ -56,6 +56,7 @@ per-file android_media_* = file:/media/java/android/media/OWNERS per-file android_media_midi_* = file:/media/java/android/media/midi/OWNERS per-file android_opengl_* = file:/opengl/java/android/opengl/OWNERS per-file android_os_storage_* = file:/core/java/android/os/storage/OWNERS +per-file android_os_Trace* = file:/TRACE_OWNERS per-file android_se_* = file:/omapi/java/android/se/OWNERS per-file android_security_* = file:/core/java/android/security/OWNERS per-file android_view_* = file:/core/java/android/view/OWNERS diff --git a/core/jni/android_os_Trace.cpp b/core/jni/android_os_Trace.cpp index 85fd5d99e473..734b6ca47660 100644 --- a/core/jni/android_os_Trace.cpp +++ b/core/jni/android_os_Trace.cpp @@ -82,6 +82,26 @@ static void android_os_Trace_nativeAsyncTraceEnd(JNIEnv* env, jclass, }); } +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 @@ static const JNINativeMethod gTraceMethods[] = { { "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 }, |