summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/tracing/perfetto/DataSource.java4
-rw-r--r--core/java/android/tracing/perfetto/TracingContext.java17
-rw-r--r--core/jni/android_tracing_PerfettoDataSource.cpp9
3 files changed, 9 insertions, 21 deletions
diff --git a/core/java/android/tracing/perfetto/DataSource.java b/core/java/android/tracing/perfetto/DataSource.java
index b9ab82cb63a9..44c1c3410897 100644
--- a/core/java/android/tracing/perfetto/DataSource.java
+++ b/core/java/android/tracing/perfetto/DataSource.java
@@ -85,7 +85,7 @@ public abstract class DataSource<DataSourceInstanceType extends DataSourceInstan
new TracingContext<>(this, instanceIndex);
fun.trace(ctx);
- ctx.flush();
+ nativeWritePackets(mNativeObj, ctx.getAndClearAllPendingTracePackets());
} while (nativePerfettoDsTraceIterateNext(mNativeObj));
} finally {
nativePerfettoDsTraceIterateBreak(mNativeObj);
@@ -179,4 +179,6 @@ public abstract class DataSource<DataSourceInstanceType extends DataSourceInstan
private static native boolean nativePerfettoDsTraceIterateNext(long dataSourcePtr);
private static native void nativePerfettoDsTraceIterateBreak(long dataSourcePtr);
private static native int nativeGetPerfettoDsInstanceIndex(long dataSourcePtr);
+
+ private static native void nativeWritePackets(long dataSourcePtr, byte[][] packetData);
}
diff --git a/core/java/android/tracing/perfetto/TracingContext.java b/core/java/android/tracing/perfetto/TracingContext.java
index 6b7df5441427..98cb4c838eed 100644
--- a/core/java/android/tracing/perfetto/TracingContext.java
+++ b/core/java/android/tracing/perfetto/TracingContext.java
@@ -59,19 +59,6 @@ public class TracingContext<DataSourceInstanceType extends DataSourceInstance, T
}
/**
- * Forces a commit of the thread-local tracing data written so far to the
- * service. This is almost never required (tracing data is periodically
- * committed as trace pages are filled up) and has a non-negligible
- * performance hit (requires an IPC + refresh of the current thread-local
- * chunk). The only case when this should be used is when handling OnStop()
- * asynchronously, to ensure sure that the data is committed before the
- * Stop timeout expires.
- */
- public void flush() {
- nativeFlush(mDataSource.mNativeObj, getAndClearAllPendingTracePackets());
- }
-
- /**
* Can optionally be used to store custom per-sequence
* session data, which is not reset when incremental state is cleared
* (e.g. configuration options).
@@ -109,7 +96,7 @@ public class TracingContext<DataSourceInstanceType extends DataSourceInstance, T
return incrementalState;
}
- private byte[][] getAndClearAllPendingTracePackets() {
+ protected byte[][] getAndClearAllPendingTracePackets() {
byte[][] res = new byte[mTracePackets.size()][];
for (int i = 0; i < mTracePackets.size(); i++) {
ProtoOutputStream tracePacket = mTracePackets.get(i);
@@ -120,8 +107,6 @@ public class TracingContext<DataSourceInstanceType extends DataSourceInstance, T
return res;
}
- private static native void nativeFlush(long dataSourcePtr, byte[][] packetData);
-
private static native Object nativeGetCustomTls(long nativeDsPtr);
private static native void nativeSetCustomTls(long nativeDsPtr, Object tlsState);
diff --git a/core/jni/android_tracing_PerfettoDataSource.cpp b/core/jni/android_tracing_PerfettoDataSource.cpp
index f82ebfe8c947..662b0dada8bb 100644
--- a/core/jni/android_tracing_PerfettoDataSource.cpp
+++ b/core/jni/android_tracing_PerfettoDataSource.cpp
@@ -244,8 +244,8 @@ static jlong nativeGetFinalizer(JNIEnv* /* env */, jclass /* clazz */) {
return static_cast<jlong>(reinterpret_cast<uintptr_t>(&nativeDestroy));
}
-void nativeFlush(JNIEnv* env, jclass clazz, jlong ds_ptr, jobjectArray packets) {
- ALOG(LOG_DEBUG, LOG_TAG, "nativeFlush(%p)", (void*)ds_ptr);
+void nativeWritePackets(JNIEnv* env, jclass clazz, jlong ds_ptr, jobjectArray packets) {
+ ALOG(LOG_DEBUG, LOG_TAG, "nativeWritePackets(%p)", (void*)ds_ptr);
sp<PerfettoDataSource> datasource = reinterpret_cast<PerfettoDataSource*>(ds_ptr);
datasource->WritePackets(env, packets);
}
@@ -431,11 +431,12 @@ const JNINativeMethod gMethods[] = {
{"nativePerfettoDsTraceIterateBegin", "(J)Z", (void*)nativePerfettoDsTraceIterateBegin},
{"nativePerfettoDsTraceIterateNext", "(J)Z", (void*)nativePerfettoDsTraceIterateNext},
{"nativePerfettoDsTraceIterateBreak", "(J)V", (void*)nativePerfettoDsTraceIterateBreak},
- {"nativeGetPerfettoDsInstanceIndex", "(J)I", (void*)nativeGetPerfettoDsInstanceIndex}};
+ {"nativeGetPerfettoDsInstanceIndex", "(J)I", (void*)nativeGetPerfettoDsInstanceIndex},
+
+ {"nativeWritePackets", "(J[[B)V", (void*)nativeWritePackets}};
const JNINativeMethod gMethodsTracingContext[] = {
/* name, signature, funcPtr */
- {"nativeFlush", "(J[[B)V", (void*)nativeFlush},
{"nativeGetCustomTls", "(J)Ljava/lang/Object;", (void*)nativeGetCustomTls},
{"nativeGetIncrementalState", "(J)Ljava/lang/Object;", (void*)nativeGetIncrementalState},
{"nativeSetCustomTls", "(JLjava/lang/Object;)V", (void*)nativeSetCustomTls},