diff options
Diffstat (limited to 'perfprofd/binder_interface/perfprofd_binder.cc')
-rw-r--r-- | perfprofd/binder_interface/perfprofd_binder.cc | 48 |
1 files changed, 39 insertions, 9 deletions
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)) { |