diff options
| -rw-r--r-- | core/java/android/tracing/perfetto/InitArguments.java | 17 | ||||
| -rw-r--r-- | core/java/android/tracing/perfetto/Producer.java | 4 | ||||
| -rw-r--r-- | core/jni/android_tracing_PerfettoProducer.cpp | 8 |
3 files changed, 21 insertions, 8 deletions
diff --git a/core/java/android/tracing/perfetto/InitArguments.java b/core/java/android/tracing/perfetto/InitArguments.java index da8c273fd14e..b4cb68c242b3 100644 --- a/core/java/android/tracing/perfetto/InitArguments.java +++ b/core/java/android/tracing/perfetto/InitArguments.java @@ -26,6 +26,7 @@ import java.lang.annotation.RetentionPolicy; */ public class InitArguments { public final @PerfettoBackend int backends; + public final int shmemSizeHintKb; /** * @hide @@ -44,11 +45,21 @@ public class InitArguments { // on Linux/Android/Mac uses a named UNIX socket). public static final int PERFETTO_BACKEND_SYSTEM = (1 << 1); - public static InitArguments DEFAULTS = new InitArguments(PERFETTO_BACKEND_SYSTEM); + public static InitArguments DEFAULTS = new InitArguments(PERFETTO_BACKEND_SYSTEM, 0); - public static InitArguments TESTING = new InitArguments(PERFETTO_BACKEND_IN_PROCESS); + public static InitArguments TESTING = new InitArguments(PERFETTO_BACKEND_IN_PROCESS, 0); - public InitArguments(@PerfettoBackend int backends) { + /** + * Perfetto initialization arguments. + * + * @param backends Bitwise-or of backends that should be enabled. + * @param shmemSizeHintKb [Optional] Tune the size of the shared memory buffer between the + * current process and the service backend(s). This is a trade-off between memory footprint and + * the ability to sustain bursts of trace writes. If set, the value must be a multiple of 4KB. + * The value can be ignored if larger than kMaxShmSize (32MB) or not a multiple of 4KB. + */ + public InitArguments(@PerfettoBackend int backends, int shmemSizeHintKb) { this.backends = backends; + this.shmemSizeHintKb = shmemSizeHintKb; } } diff --git a/core/java/android/tracing/perfetto/Producer.java b/core/java/android/tracing/perfetto/Producer.java index a1b3eb754157..13582e8742c3 100644 --- a/core/java/android/tracing/perfetto/Producer.java +++ b/core/java/android/tracing/perfetto/Producer.java @@ -27,8 +27,8 @@ public class Producer { * @param args arguments on how to initialize the Perfetto producer. */ public static void init(InitArguments args) { - nativePerfettoProducerInit(args.backends); + nativePerfettoProducerInit(args.backends, args.shmemSizeHintKb); } - private static native void nativePerfettoProducerInit(int backends); + private static native void nativePerfettoProducerInit(int backends, int shmemSizeHintKb); } diff --git a/core/jni/android_tracing_PerfettoProducer.cpp b/core/jni/android_tracing_PerfettoProducer.cpp index f8c63c80f769..f55338057718 100644 --- a/core/jni/android_tracing_PerfettoProducer.cpp +++ b/core/jni/android_tracing_PerfettoProducer.cpp @@ -34,15 +34,17 @@ namespace android { -void perfettoProducerInit(JNIEnv* env, jclass clazz, int backends) { +void perfettoProducerInit(JNIEnv* env, jclass clazz, PerfettoBackendTypes backends, + uint32_t shmem_size_hint_kb) { struct PerfettoProducerInitArgs args = PERFETTO_PRODUCER_INIT_ARGS_INIT(); - args.backends = (PerfettoBackendTypes)backends; + args.backends = backends; + args.shmem_size_hint_kb = shmem_size_hint_kb; PerfettoProducerInit(args); } const JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ - {"nativePerfettoProducerInit", "(I)V", (void*)perfettoProducerInit}, + {"nativePerfettoProducerInit", "(II)V", (void*)perfettoProducerInit}, }; int register_android_tracing_PerfettoProducer(JNIEnv* env) { |