diff options
-rw-r--r-- | perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl | 7 | ||||
-rw-r--r-- | perfprofd/binder_interface/perfprofd_binder.cc | 48 |
2 files changed, 44 insertions, 11 deletions
diff --git a/perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl b/perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl index f022dbf4..5fdc09a9 100644 --- a/perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl +++ b/perfprofd/binder_interface/aidl/android/os/IPerfProfd.aidl @@ -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. */ diff --git a/perfprofd/binder_interface/perfprofd_binder.cc b/perfprofd/binder_interface/perfprofd_binder.cc index 53394400..cbb3fcef 100644 --- a/perfprofd/binder_interface/perfprofd_binder.cc +++ b/perfprofd/binder_interface/perfprofd_binder.cc @@ -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)) { |