summaryrefslogtreecommitdiff
path: root/perfprofd/binder_interface/perfprofd_binder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'perfprofd/binder_interface/perfprofd_binder.cc')
-rw-r--r--perfprofd/binder_interface/perfprofd_binder.cc48
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)) {