OSDN Git Service

Perfprofd: Expose more parameters in the simple binder interface
authorAndreas Gampe <agampe@google.com>
Sat, 21 Apr 2018 00:11:22 +0000 (17:11 -0700)
committerAndreas Gampe <agampe@google.com>
Thu, 3 May 2018 20:31:30 +0000 (13:31 -0700)
Expose most interesting parameters.

(cherry picked from commit 5a7181b3d3127660916e7a14057fdafa71c7d77b)

Bug: 73175642
Test: mmma system/extras/perfprofd
Merged-In: Ifab7f0a0c4a1e664a6b679c6f2d060f02eee232c
Change-Id: Ifab7f0a0c4a1e664a6b679c6f2d060f02eee232c

perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl
perfprofd/binder_interface/perfprofd_binder.cc

index f022dbf..5fdc09a 100644 (file)
@@ -21,8 +21,11 @@ interface IPerfProfd {
     /**
      * Start continuous profiling with the given parameters.
      */
-    void startProfiling(int profilingDuration, int profilingInterval,
-            int iterations);
+    void startProfiling(int collectionInterval, int iterations,
+            int process, int samplingPeriod, int samplingFrequency,
+            int sampleDuration, boolean stackProfile,
+            boolean useElfSymbolizer, boolean sendToDropbox);
+
     /**
      * Start profiling with the parameters in the given protobuf.
      */
index 5339440..cbb3fce 100644 (file)
@@ -66,9 +66,15 @@ class PerfProfdNativeService : public BinderService<PerfProfdNativeService>,
 
   status_t dump(int fd, const Vector<String16> &args) override;
 
-  Status startProfiling(int32_t profilingDuration,
-                        int32_t profilingInterval,
-                        int32_t iterations) override;
+  Status startProfiling(int32_t collectionInterval,
+                        int32_t iterations,
+                        int32_t process,
+                        int32_t samplingPeriod,
+                        int32_t samplingFrequency,
+                        int32_t sampleDuration,
+                        bool stackProfile,
+                        bool useElfSymbolizer,
+                        bool sendToDropbox) override;
   Status startProfilingProtobuf(const std::vector<uint8_t>& config_proto) override;
 
   Status stopProfiling() override;
@@ -105,15 +111,39 @@ status_t PerfProfdNativeService::dump(int fd, const Vector<String16> &args) {
   return NO_ERROR;
 }
 
-Status PerfProfdNativeService::startProfiling(int32_t profilingDuration,
-                                              int32_t profilingInterval,
-                                              int32_t iterations) {
+Status PerfProfdNativeService::startProfiling(int32_t collectionInterval,
+                                              int32_t iterations,
+                                              int32_t process,
+                                              int32_t samplingPeriod,
+                                              int32_t samplingFrequency,
+                                              int32_t sampleDuration,
+                                              bool stackProfile,
+                                              bool useElfSymbolizer,
+                                              bool sendToDropbox) {
   auto config_fn = [&](ThreadedConfig& config) {
     config = ThreadedConfig();  // Reset to a default config.
 
-    config.sample_duration_in_s = static_cast<uint32_t>(profilingDuration);
-    config.collection_interval_in_s = static_cast<uint32_t>(profilingInterval);
-    config.main_loop_iterations = static_cast<uint32_t>(iterations);
+    if (collectionInterval >= 0) {
+      config.collection_interval_in_s = collectionInterval;
+    }
+    if (iterations >= 0) {
+      config.main_loop_iterations = iterations;
+    }
+    if (process >= 0) {
+      config.process = process;
+    }
+    if (samplingPeriod > 0) {
+      config.sampling_period = samplingPeriod;
+    }
+    if (samplingFrequency > 0) {
+      config.sampling_frequency = samplingFrequency;
+    }
+    if (sampleDuration > 0) {
+      config.sample_duration_in_s = sampleDuration;
+    }
+    config.stack_profile = stackProfile;
+    config.use_elf_symbolizer = useElfSymbolizer;
+    config.send_to_dropbox = sendToDropbox;
   };
   std::string error_msg;
   if (!StartProfiling(config_fn, &error_msg)) {