Autogenerate protos and event_info.
Takes into account the existing ordering.
Bug: 77844626
Change-Id: Id2b54e00f4d4536ccb96335727bf7cfd66dca236
diff --git a/Android.bp b/Android.bp
index f36b881..1deeabe 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3695,6 +3695,7 @@
shared_libs: [
"libandroid",
"liblog",
+ "libprotobuf-cpp-full",
"libprotobuf-cpp-lite",
],
static_libs: [
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 8e22fc6..daacb00 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -12,13 +12,124 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+# Autogenerated by ftrace_proto_gen.
+
ftrace_proto_names = [
- "binder_lock.proto",
- "binder_locked.proto",
- "binder_set_priority.proto",
+ "ftrace_event.proto",
+ "ftrace_event_bundle.proto",
+ "test_bundle_wrapper.proto",
+ "print.proto",
+ "sched_switch.proto",
+ "cpufreq_interactive_already.proto",
+ "cpufreq_interactive_boost.proto",
+ "cpufreq_interactive_notyet.proto",
+ "cpufreq_interactive_setspeed.proto",
+ "cpufreq_interactive_target.proto",
+ "cpufreq_interactive_unboost.proto",
+ "cpu_frequency.proto",
+ "cpu_frequency_limits.proto",
+ "cpu_idle.proto",
+ "clock_enable.proto",
+ "clock_disable.proto",
+ "clock_set_rate.proto",
+ "sched_wakeup.proto",
+ "sched_blocked_reason.proto",
+ "sched_cpu_hotplug.proto",
+ "sched_waking.proto",
+ "ipi_entry.proto",
+ "ipi_exit.proto",
+ "ipi_raise.proto",
+ "softirq_entry.proto",
+ "softirq_exit.proto",
+ "softirq_raise.proto",
+ "i2c_read.proto",
+ "i2c_write.proto",
+ "i2c_result.proto",
+ "i2c_reply.proto",
+ "smbus_read.proto",
+ "smbus_write.proto",
+ "smbus_result.proto",
+ "smbus_reply.proto",
+ "lowmemory_kill.proto",
+ "irq_handler_entry.proto",
+ "irq_handler_exit.proto",
+ "sync_pt.proto",
+ "sync_timeline.proto",
+ "sync_wait.proto",
+ "ext4_da_write_begin.proto",
+ "ext4_da_write_end.proto",
+ "ext4_sync_file_enter.proto",
+ "ext4_sync_file_exit.proto",
+ "block_rq_issue.proto",
+ "mm_vmscan_direct_reclaim_begin.proto",
+ "mm_vmscan_direct_reclaim_end.proto",
+ "mm_vmscan_kswapd_wake.proto",
+ "mm_vmscan_kswapd_sleep.proto",
"binder_transaction.proto",
"binder_transaction_received.proto",
+ "binder_set_priority.proto",
+ "binder_lock.proto",
+ "binder_locked.proto",
"binder_unlock.proto",
+ "workqueue_activate_work.proto",
+ "workqueue_execute_end.proto",
+ "workqueue_execute_start.proto",
+ "workqueue_queue_work.proto",
+ "regulator_disable.proto",
+ "regulator_disable_complete.proto",
+ "regulator_enable.proto",
+ "regulator_enable_complete.proto",
+ "regulator_enable_delay.proto",
+ "regulator_set_voltage.proto",
+ "regulator_set_voltage_complete.proto",
+ "cgroup_attach_task.proto",
+ "cgroup_mkdir.proto",
+ "cgroup_remount.proto",
+ "cgroup_rmdir.proto",
+ "cgroup_transfer_tasks.proto",
+ "cgroup_destroy_root.proto",
+ "cgroup_release.proto",
+ "cgroup_rename.proto",
+ "cgroup_setup_root.proto",
+ "mdp_cmd_kickoff.proto",
+ "mdp_commit.proto",
+ "mdp_perf_set_ot.proto",
+ "mdp_sspp_change.proto",
+ "tracing_mark_write.proto",
+ "mdp_cmd_pingpong_done.proto",
+ "mdp_compare_bw.proto",
+ "mdp_perf_set_panic_luts.proto",
+ "mdp_sspp_set.proto",
+ "mdp_cmd_readptr_done.proto",
+ "mdp_misr_crc.proto",
+ "mdp_perf_set_qos_luts.proto",
+ "mdp_trace_counter.proto",
+ "mdp_cmd_release_bw.proto",
+ "mdp_mixer_update.proto",
+ "mdp_perf_set_wm_levels.proto",
+ "mdp_video_underrun_done.proto",
+ "mdp_cmd_wait_pingpong.proto",
+ "mdp_perf_prefill_calc.proto",
+ "mdp_perf_update_bus.proto",
+ "rotator_bw_ao_as_context.proto",
+ "mm_filemap_add_to_page_cache.proto",
+ "mm_filemap_delete_from_page_cache.proto",
+ "mm_compaction_begin.proto",
+ "mm_compaction_defer_compaction.proto",
+ "mm_compaction_deferred.proto",
+ "mm_compaction_defer_reset.proto",
+ "mm_compaction_end.proto",
+ "mm_compaction_finished.proto",
+ "mm_compaction_isolate_freepages.proto",
+ "mm_compaction_isolate_migratepages.proto",
+ "mm_compaction_kcompactd_sleep.proto",
+ "mm_compaction_kcompactd_wake.proto",
+ "mm_compaction_migratepages.proto",
+ "mm_compaction_suitable.proto",
+ "mm_compaction_try_to_compact_pages.proto",
+ "mm_compaction_wakeup_kcompactd.proto",
+ "suspend_resume.proto",
+ "sched_wakeup_new.proto",
"block_bio_backmerge.proto",
"block_bio_bounce.proto",
"block_bio_complete.proto",
@@ -31,34 +142,12 @@
"block_rq_abort.proto",
"block_rq_complete.proto",
"block_rq_insert.proto",
- "block_rq_issue.proto",
"block_rq_remap.proto",
"block_rq_requeue.proto",
"block_sleeprq.proto",
"block_split.proto",
"block_touch_buffer.proto",
"block_unplug.proto",
- "cgroup_attach_task.proto",
- "cgroup_destroy_root.proto",
- "cgroup_mkdir.proto",
- "cgroup_release.proto",
- "cgroup_remount.proto",
- "cgroup_rename.proto",
- "cgroup_rmdir.proto",
- "cgroup_setup_root.proto",
- "cgroup_transfer_tasks.proto",
- "clock_disable.proto",
- "clock_enable.proto",
- "clock_set_rate.proto",
- "cpu_frequency.proto",
- "cpu_frequency_limits.proto",
- "cpu_idle.proto",
- "cpufreq_interactive_already.proto",
- "cpufreq_interactive_boost.proto",
- "cpufreq_interactive_notyet.proto",
- "cpufreq_interactive_setspeed.proto",
- "cpufreq_interactive_target.proto",
- "cpufreq_interactive_unboost.proto",
"ext4_alloc_da_blocks.proto",
"ext4_allocate_blocks.proto",
"ext4_allocate_inode.proto",
@@ -67,8 +156,6 @@
"ext4_da_release_space.proto",
"ext4_da_reserve_space.proto",
"ext4_da_update_reserve_space.proto",
- "ext4_da_write_begin.proto",
- "ext4_da_write_end.proto",
"ext4_da_write_pages.proto",
"ext4_da_write_pages_extent.proto",
"ext4_direct_IO_enter.proto",
@@ -139,8 +226,6 @@
"ext4_remove_blocks.proto",
"ext4_request_blocks.proto",
"ext4_request_inode.proto",
- "ext4_sync_file_enter.proto",
- "ext4_sync_file_exit.proto",
"ext4_sync_fs.proto",
"ext4_trim_all_free.proto",
"ext4_trim_extent.proto",
@@ -154,97 +239,14 @@
"ext4_writepages.proto",
"ext4_writepages_result.proto",
"ext4_zero_range.proto",
- "ftrace_event.proto",
- "ftrace_event_bundle.proto",
- "i2c_read.proto",
- "i2c_reply.proto",
- "i2c_result.proto",
- "i2c_write.proto",
- "ipi_entry.proto",
- "ipi_exit.proto",
- "ipi_raise.proto",
- "irq_handler_entry.proto",
- "irq_handler_exit.proto",
- "lowmemory_kill.proto",
- "mdp_cmd_kickoff.proto",
- "mdp_cmd_pingpong_done.proto",
- "mdp_cmd_readptr_done.proto",
- "mdp_cmd_release_bw.proto",
- "mdp_cmd_wait_pingpong.proto",
- "mdp_commit.proto",
- "mdp_compare_bw.proto",
- "mdp_misr_crc.proto",
- "mdp_mixer_update.proto",
- "mdp_perf_prefill_calc.proto",
- "mdp_perf_set_ot.proto",
- "mdp_perf_set_panic_luts.proto",
- "mdp_perf_set_qos_luts.proto",
- "mdp_perf_set_wm_levels.proto",
- "mdp_perf_update_bus.proto",
- "mdp_sspp_change.proto",
- "mdp_sspp_set.proto",
- "mdp_trace_counter.proto",
- "mdp_video_underrun_done.proto",
- "mm_compaction_begin.proto",
- "mm_compaction_defer_compaction.proto",
- "mm_compaction_defer_reset.proto",
- "mm_compaction_deferred.proto",
- "mm_compaction_end.proto",
- "mm_compaction_finished.proto",
- "mm_compaction_isolate_freepages.proto",
- "mm_compaction_isolate_migratepages.proto",
- "mm_compaction_kcompactd_sleep.proto",
- "mm_compaction_kcompactd_wake.proto",
- "mm_compaction_migratepages.proto",
- "mm_compaction_suitable.proto",
- "mm_compaction_try_to_compact_pages.proto",
- "mm_compaction_wakeup_kcompactd.proto",
- "mm_filemap_add_to_page_cache.proto",
- "mm_filemap_delete_from_page_cache.proto",
- "mm_vmscan_direct_reclaim_begin.proto",
- "mm_vmscan_direct_reclaim_end.proto",
- "mm_vmscan_kswapd_sleep.proto",
- "mm_vmscan_kswapd_wake.proto",
- "print.proto",
- "regulator_disable.proto",
- "regulator_disable_complete.proto",
- "regulator_enable.proto",
- "regulator_enable_complete.proto",
- "regulator_enable_delay.proto",
- "regulator_set_voltage.proto",
- "regulator_set_voltage_complete.proto",
- "rotator_bw_ao_as_context.proto",
- "sched_blocked_reason.proto",
- "sched_cpu_hotplug.proto",
+ "task_newtask.proto",
+ "task_rename.proto",
"sched_process_exec.proto",
"sched_process_exit.proto",
"sched_process_fork.proto",
"sched_process_free.proto",
"sched_process_hang.proto",
"sched_process_wait.proto",
- "sched_switch.proto",
- "sched_wakeup.proto",
- "sched_wakeup_new.proto",
- "sched_waking.proto",
- "smbus_read.proto",
- "smbus_reply.proto",
- "smbus_result.proto",
- "smbus_write.proto",
- "softirq_entry.proto",
- "softirq_exit.proto",
- "softirq_raise.proto",
- "suspend_resume.proto",
- "sync_pt.proto",
- "sync_timeline.proto",
- "sync_wait.proto",
- "task_newtask.proto",
- "task_rename.proto",
- "test_bundle_wrapper.proto",
- "tracing_mark_write.proto",
- "workqueue_activate_work.proto",
- "workqueue_execute_end.proto",
- "workqueue_execute_start.proto",
- "workqueue_queue_work.proto",
"f2fs_do_submit_bio.proto",
"f2fs_evict_inode.proto",
"f2fs_fallocate.proto",
diff --git a/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto b/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
index 841fa55..3ef7a4a 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_reserve_space.proto
@@ -13,4 +13,5 @@
optional int32 reserved_data_blocks = 4;
optional int32 reserved_meta_blocks = 5;
optional uint32 mode = 6;
+ optional int32 md_needed = 7;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto b/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
index 1d3c076..8c4b0be 100644
--- a/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
+++ b/protos/perfetto/trace/ftrace/ext4_da_write_pages.proto
@@ -12,4 +12,9 @@
optional uint64 first_page = 3;
optional int64 nr_to_write = 4;
optional int32 sync_mode = 5;
+ optional uint64 b_blocknr = 6;
+ optional uint32 b_size = 7;
+ optional uint32 b_state = 8;
+ optional int32 io_done = 9;
+ optional int32 pages_written = 10;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
index fd50288..9ea11d6 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_find_delayed_extent_range_exit.proto
@@ -12,5 +12,5 @@
optional uint32 lblk = 3;
optional uint32 len = 4;
optional uint64 pblk = 5;
- optional uint32 status = 6;
+ optional uint64 status = 6;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto b/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
index aca9db7..22289b1 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_insert_extent.proto
@@ -12,5 +12,5 @@
optional uint32 lblk = 3;
optional uint32 len = 4;
optional uint64 pblk = 5;
- optional uint32 status = 6;
+ optional uint64 status = 6;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
index e7ca8e4..b2f3669 100644
--- a/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
+++ b/protos/perfetto/trace/ftrace/ext4_es_lookup_extent_exit.proto
@@ -12,6 +12,6 @@
optional uint32 lblk = 3;
optional uint32 len = 4;
optional uint64 pblk = 5;
- optional uint32 status = 6;
+ optional uint64 status = 6;
optional int32 found = 7;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto b/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
index 162779f..4f32d7f 100644
--- a/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
+++ b/protos/perfetto/trace/ftrace/ext4_fallocate_enter.proto
@@ -12,4 +12,5 @@
optional int64 offset = 3;
optional int64 len = 4;
optional int32 mode = 5;
+ optional int64 pos = 6;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto b/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
index ce49c38..d62307a 100644
--- a/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_invalidatepage.proto
@@ -10,6 +10,6 @@
optional uint64 dev = 1;
optional uint64 ino = 2;
optional uint64 index = 3;
- optional uint32 offset = 4;
+ optional uint64 offset = 4;
optional uint32 length = 5;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_journal_start.proto b/protos/perfetto/trace/ftrace/ext4_journal_start.proto
index 896ca59..b2aadf7 100644
--- a/protos/perfetto/trace/ftrace/ext4_journal_start.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journal_start.proto
@@ -11,4 +11,5 @@
optional uint64 ip = 2;
optional int32 blocks = 3;
optional int32 rsv_blocks = 4;
+ optional int32 nblocks = 5;
}
diff --git a/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto b/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
index a5c544f..0e63bda 100644
--- a/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
+++ b/protos/perfetto/trace/ftrace/ext4_journalled_invalidatepage.proto
@@ -10,6 +10,6 @@
optional uint64 dev = 1;
optional uint64 ino = 2;
optional uint64 index = 3;
- optional uint32 offset = 4;
+ optional uint64 offset = 4;
optional uint32 length = 5;
}
diff --git a/protos/perfetto/trace/ftrace/irq_handler_entry.proto b/protos/perfetto/trace/ftrace/irq_handler_entry.proto
index 1e47fe5..f78304d 100644
--- a/protos/perfetto/trace/ftrace/irq_handler_entry.proto
+++ b/protos/perfetto/trace/ftrace/irq_handler_entry.proto
@@ -9,4 +9,5 @@
message IrqHandlerEntryFtraceEvent {
optional int32 irq = 1;
optional string name = 2;
+ optional uint32 handler = 3;
}
diff --git a/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto b/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
index 3399623..968ef7b 100644
--- a/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
+++ b/protos/perfetto/trace/ftrace/mm_filemap_add_to_page_cache.proto
@@ -11,4 +11,5 @@
optional uint64 i_ino = 2;
optional uint64 index = 3;
optional uint64 s_dev = 4;
+ optional uint64 page = 5;
}
diff --git a/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto b/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
index 9a49483..2ac4d89 100644
--- a/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
+++ b/protos/perfetto/trace/ftrace/mm_filemap_delete_from_page_cache.proto
@@ -11,4 +11,5 @@
optional uint64 i_ino = 2;
optional uint64 index = 3;
optional uint64 s_dev = 4;
+ optional uint64 page = 5;
}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index de7bc95..b0b56b9 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -743,7 +743,7 @@
optional uint32 lblk = 3;
optional uint32 len = 4;
optional uint64 pblk = 5;
- optional uint32 status = 6;
+ optional uint64 status = 6;
optional int32 found = 7;
}
diff --git a/src/ftrace_reader/event_info.cc b/src/ftrace_reader/event_info.cc
index fd8d0c6..6bea89d 100644
--- a/src/ftrace_reader/event_info.cc
+++ b/src/ftrace_reader/event_info.cc
@@ -12,32 +12,537 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "binder_lock";
- event->group = "binder";
- event->proto_field_id = 53;
- event->fields.push_back(MakeField("tag", 1, kProtoString));
+ event->name = "print";
+ event->group = "ftrace";
+ event->proto_field_id = 3;
+ event->fields.push_back(MakeField("ip", 1, kProtoUint64));
+ event->fields.push_back(MakeField("buf", 2, kProtoString));
}
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "binder_locked";
- event->group = "binder";
- event->proto_field_id = 54;
- event->fields.push_back(MakeField("tag", 1, kProtoString));
+ event->name = "sched_switch";
+ event->group = "sched";
+ event->proto_field_id = 4;
+ event->fields.push_back(MakeField("prev_comm", 1, kProtoString));
+ event->fields.push_back(MakeField("prev_pid", 2, kProtoInt32));
+ event->fields.push_back(MakeField("prev_prio", 3, kProtoInt32));
+ event->fields.push_back(MakeField("prev_state", 4, kProtoInt64));
+ event->fields.push_back(MakeField("next_comm", 5, kProtoString));
+ event->fields.push_back(MakeField("next_pid", 6, kProtoInt32));
+ event->fields.push_back(MakeField("next_prio", 7, kProtoInt32));
}
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "binder_set_priority";
- event->group = "binder";
- event->proto_field_id = 52;
- event->fields.push_back(MakeField("proc", 1, kProtoInt32));
- event->fields.push_back(MakeField("thread", 2, kProtoInt32));
- event->fields.push_back(MakeField("old_prio", 3, kProtoUint32));
- event->fields.push_back(MakeField("new_prio", 4, kProtoUint32));
- event->fields.push_back(MakeField("desired_prio", 5, kProtoUint32));
+ event->name = "cpufreq_interactive_already";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 5;
+ event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
+ event->fields.push_back(MakeField("load", 2, kProtoUint64));
+ event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
+ event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
+ event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpufreq_interactive_boost";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 6;
+ event->fields.push_back(MakeField("s", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpufreq_interactive_notyet";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 7;
+ event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
+ event->fields.push_back(MakeField("load", 2, kProtoUint64));
+ event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
+ event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
+ event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpufreq_interactive_setspeed";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 8;
+ event->fields.push_back(MakeField("cpu_id", 1, kProtoUint32));
+ event->fields.push_back(MakeField("targfreq", 2, kProtoUint64));
+ event->fields.push_back(MakeField("actualfreq", 3, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpufreq_interactive_target";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 9;
+ event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
+ event->fields.push_back(MakeField("load", 2, kProtoUint64));
+ event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
+ event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
+ event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpufreq_interactive_unboost";
+ event->group = "cpufreq_interactive";
+ event->proto_field_id = 10;
+ event->fields.push_back(MakeField("s", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpu_frequency";
+ event->group = "power";
+ event->proto_field_id = 11;
+ event->fields.push_back(MakeField("state", 1, kProtoUint32));
+ event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpu_frequency_limits";
+ event->group = "power";
+ event->proto_field_id = 12;
+ event->fields.push_back(MakeField("min_freq", 1, kProtoUint32));
+ event->fields.push_back(MakeField("max_freq", 2, kProtoUint32));
+ event->fields.push_back(MakeField("cpu_id", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cpu_idle";
+ event->group = "power";
+ event->proto_field_id = 13;
+ event->fields.push_back(MakeField("state", 1, kProtoUint32));
+ event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "clock_enable";
+ event->group = "power";
+ event->proto_field_id = 14;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("state", 2, kProtoUint64));
+ event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "clock_disable";
+ event->group = "power";
+ event->proto_field_id = 15;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("state", 2, kProtoUint64));
+ event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "clock_set_rate";
+ event->group = "power";
+ event->proto_field_id = 16;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("state", 2, kProtoUint64));
+ event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sched_wakeup";
+ event->group = "sched";
+ event->proto_field_id = 17;
+ event->fields.push_back(MakeField("comm", 1, kProtoString));
+ event->fields.push_back(MakeField("pid", 2, kProtoInt32));
+ event->fields.push_back(MakeField("prio", 3, kProtoInt32));
+ event->fields.push_back(MakeField("success", 4, kProtoInt32));
+ event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sched_blocked_reason";
+ event->group = "sched";
+ event->proto_field_id = 18;
+ event->fields.push_back(MakeField("pid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("caller", 2, kProtoUint64));
+ event->fields.push_back(MakeField("io_wait", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sched_cpu_hotplug";
+ event->group = "sched";
+ event->proto_field_id = 19;
+ event->fields.push_back(MakeField("affected_cpu", 1, kProtoInt32));
+ event->fields.push_back(MakeField("error", 2, kProtoInt32));
+ event->fields.push_back(MakeField("status", 3, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sched_waking";
+ event->group = "sched";
+ event->proto_field_id = 20;
+ event->fields.push_back(MakeField("comm", 1, kProtoString));
+ event->fields.push_back(MakeField("pid", 2, kProtoInt32));
+ event->fields.push_back(MakeField("prio", 3, kProtoInt32));
+ event->fields.push_back(MakeField("success", 4, kProtoInt32));
+ event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ipi_entry";
+ event->group = "ipi";
+ event->proto_field_id = 21;
+ event->fields.push_back(MakeField("reason", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ipi_exit";
+ event->group = "ipi";
+ event->proto_field_id = 22;
+ event->fields.push_back(MakeField("reason", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ipi_raise";
+ event->group = "ipi";
+ event->proto_field_id = 23;
+ event->fields.push_back(MakeField("target_cpus", 1, kProtoUint32));
+ event->fields.push_back(MakeField("reason", 2, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "softirq_entry";
+ event->group = "irq";
+ event->proto_field_id = 24;
+ event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "softirq_exit";
+ event->group = "irq";
+ event->proto_field_id = 25;
+ event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "softirq_raise";
+ event->group = "irq";
+ event->proto_field_id = 26;
+ event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "i2c_read";
+ event->group = "i2c";
+ event->proto_field_id = 27;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("addr", 3, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 4, kProtoUint32));
+ event->fields.push_back(MakeField("len", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "i2c_write";
+ event->group = "i2c";
+ event->proto_field_id = 28;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("addr", 3, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 4, kProtoUint32));
+ event->fields.push_back(MakeField("len", 5, kProtoUint32));
+ event->fields.push_back(MakeField("buf", 6, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "i2c_result";
+ event->group = "i2c";
+ event->proto_field_id = 29;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("nr_msgs", 2, kProtoUint32));
+ event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "i2c_reply";
+ event->group = "i2c";
+ event->proto_field_id = 30;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("addr", 3, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 4, kProtoUint32));
+ event->fields.push_back(MakeField("len", 5, kProtoUint32));
+ event->fields.push_back(MakeField("buf", 6, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "smbus_read";
+ event->group = "i2c";
+ event->proto_field_id = 31;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("flags", 2, kProtoUint32));
+ event->fields.push_back(MakeField("addr", 3, kProtoUint32));
+ event->fields.push_back(MakeField("command", 4, kProtoUint32));
+ event->fields.push_back(MakeField("protocol", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "smbus_write";
+ event->group = "i2c";
+ event->proto_field_id = 32;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("addr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 3, kProtoUint32));
+ event->fields.push_back(MakeField("command", 4, kProtoUint32));
+ event->fields.push_back(MakeField("len", 5, kProtoUint32));
+ event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "smbus_result";
+ event->group = "i2c";
+ event->proto_field_id = 33;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("addr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 3, kProtoUint32));
+ event->fields.push_back(MakeField("read_write", 4, kProtoUint32));
+ event->fields.push_back(MakeField("command", 5, kProtoUint32));
+ event->fields.push_back(MakeField("res", 6, kProtoInt32));
+ event->fields.push_back(MakeField("protocol", 7, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "smbus_reply";
+ event->group = "i2c";
+ event->proto_field_id = 34;
+ event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
+ event->fields.push_back(MakeField("addr", 2, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 3, kProtoUint32));
+ event->fields.push_back(MakeField("command", 4, kProtoUint32));
+ event->fields.push_back(MakeField("len", 5, kProtoUint32));
+ event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "lowmemory_kill";
+ event->group = "lowmemorykiller";
+ event->proto_field_id = 35;
+ event->fields.push_back(MakeField("comm", 1, kProtoString));
+ event->fields.push_back(MakeField("pid", 2, kProtoInt32));
+ event->fields.push_back(MakeField("pagecache_size", 3, kProtoInt64));
+ event->fields.push_back(MakeField("pagecache_limit", 4, kProtoInt64));
+ event->fields.push_back(MakeField("free", 5, kProtoInt64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "irq_handler_entry";
+ event->group = "irq";
+ event->proto_field_id = 36;
+ event->fields.push_back(MakeField("irq", 1, kProtoInt32));
+ event->fields.push_back(MakeField("name", 2, kProtoString));
+ event->fields.push_back(MakeField("handler", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "irq_handler_exit";
+ event->group = "irq";
+ event->proto_field_id = 37;
+ event->fields.push_back(MakeField("irq", 1, kProtoInt32));
+ event->fields.push_back(MakeField("ret", 2, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sync_pt";
+ event->group = "sync";
+ event->proto_field_id = 38;
+ event->fields.push_back(MakeField("timeline", 1, kProtoString));
+ event->fields.push_back(MakeField("value", 2, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sync_timeline";
+ event->group = "sync";
+ event->proto_field_id = 39;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("value", 2, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sync_wait";
+ event->group = "sync";
+ event->proto_field_id = 40;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("status", 2, kProtoInt32));
+ event->fields.push_back(MakeField("begin", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ext4_da_write_begin";
+ event->group = "ext4";
+ event->proto_field_id = 41;
+ event->fields.push_back(MakeField("dev", 1, kProtoUint64));
+ event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("pos", 3, kProtoInt64));
+ event->fields.push_back(MakeField("len", 4, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ext4_da_write_end";
+ event->group = "ext4";
+ event->proto_field_id = 42;
+ event->fields.push_back(MakeField("dev", 1, kProtoUint64));
+ event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("pos", 3, kProtoInt64));
+ event->fields.push_back(MakeField("len", 4, kProtoUint32));
+ event->fields.push_back(MakeField("copied", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ext4_sync_file_enter";
+ event->group = "ext4";
+ event->proto_field_id = 43;
+ event->fields.push_back(MakeField("dev", 1, kProtoUint64));
+ event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("parent", 3, kProtoUint64));
+ event->fields.push_back(MakeField("datasync", 4, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "ext4_sync_file_exit";
+ event->group = "ext4";
+ event->proto_field_id = 44;
+ event->fields.push_back(MakeField("dev", 1, kProtoUint64));
+ event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "block_rq_issue";
+ event->group = "block";
+ event->proto_field_id = 45;
+ event->fields.push_back(MakeField("dev", 1, kProtoUint64));
+ event->fields.push_back(MakeField("sector", 2, kProtoUint64));
+ event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
+ event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
+ event->fields.push_back(MakeField("rwbs", 5, kProtoString));
+ event->fields.push_back(MakeField("comm", 6, kProtoString));
+ event->fields.push_back(MakeField("cmd", 7, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_vmscan_direct_reclaim_begin";
+ event->group = "vmscan";
+ event->proto_field_id = 46;
+ event->fields.push_back(MakeField("order", 1, kProtoInt32));
+ event->fields.push_back(MakeField("may_writepage", 2, kProtoInt32));
+ event->fields.push_back(MakeField("gfp_flags", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_vmscan_direct_reclaim_end";
+ event->group = "vmscan";
+ event->proto_field_id = 47;
+ event->fields.push_back(MakeField("nr_reclaimed", 1, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_vmscan_kswapd_wake";
+ event->group = "vmscan";
+ event->proto_field_id = 48;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("order", 2, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_vmscan_kswapd_sleep";
+ event->group = "vmscan";
+ event->proto_field_id = 49;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
}
{
@@ -67,6 +572,37 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
+ event->name = "binder_set_priority";
+ event->group = "binder";
+ event->proto_field_id = 52;
+ event->fields.push_back(MakeField("proc", 1, kProtoInt32));
+ event->fields.push_back(MakeField("thread", 2, kProtoInt32));
+ event->fields.push_back(MakeField("old_prio", 3, kProtoUint32));
+ event->fields.push_back(MakeField("new_prio", 4, kProtoUint32));
+ event->fields.push_back(MakeField("desired_prio", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "binder_lock";
+ event->group = "binder";
+ event->proto_field_id = 53;
+ event->fields.push_back(MakeField("tag", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "binder_locked";
+ event->group = "binder";
+ event->proto_field_id = 54;
+ event->fields.push_back(MakeField("tag", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
event->name = "binder_unlock";
event->group = "binder";
event->proto_field_id = 55;
@@ -76,6 +612,708 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
+ event->name = "workqueue_activate_work";
+ event->group = "workqueue";
+ event->proto_field_id = 56;
+ event->fields.push_back(MakeField("work", 1, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "workqueue_execute_end";
+ event->group = "workqueue";
+ event->proto_field_id = 57;
+ event->fields.push_back(MakeField("work", 1, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "workqueue_execute_start";
+ event->group = "workqueue";
+ event->proto_field_id = 58;
+ event->fields.push_back(MakeField("work", 1, kProtoUint64));
+ event->fields.push_back(MakeField("function", 2, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "workqueue_queue_work";
+ event->group = "workqueue";
+ event->proto_field_id = 59;
+ event->fields.push_back(MakeField("work", 1, kProtoUint64));
+ event->fields.push_back(MakeField("function", 2, kProtoUint64));
+ event->fields.push_back(MakeField("workqueue", 3, kProtoUint64));
+ event->fields.push_back(MakeField("req_cpu", 4, kProtoUint32));
+ event->fields.push_back(MakeField("cpu", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_disable";
+ event->group = "regulator";
+ event->proto_field_id = 60;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_disable_complete";
+ event->group = "regulator";
+ event->proto_field_id = 61;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_enable";
+ event->group = "regulator";
+ event->proto_field_id = 62;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_enable_complete";
+ event->group = "regulator";
+ event->proto_field_id = 63;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_enable_delay";
+ event->group = "regulator";
+ event->proto_field_id = 64;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_set_voltage";
+ event->group = "regulator";
+ event->proto_field_id = 65;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("min", 2, kProtoInt32));
+ event->fields.push_back(MakeField("max", 3, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "regulator_set_voltage_complete";
+ event->group = "regulator";
+ event->proto_field_id = 66;
+ event->fields.push_back(MakeField("name", 1, kProtoString));
+ event->fields.push_back(MakeField("val", 2, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_attach_task";
+ event->group = "cgroup";
+ event->proto_field_id = 67;
+ event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("pid", 3, kProtoInt32));
+ event->fields.push_back(MakeField("comm", 4, kProtoString));
+ event->fields.push_back(MakeField("cname", 5, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_mkdir";
+ event->group = "cgroup";
+ event->proto_field_id = 68;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("cname", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_remount";
+ event->group = "cgroup";
+ event->proto_field_id = 69;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
+ event->fields.push_back(MakeField("name", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_rmdir";
+ event->group = "cgroup";
+ event->proto_field_id = 70;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("cname", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_transfer_tasks";
+ event->group = "cgroup";
+ event->proto_field_id = 71;
+ event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("pid", 3, kProtoInt32));
+ event->fields.push_back(MakeField("comm", 4, kProtoString));
+ event->fields.push_back(MakeField("cname", 5, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_destroy_root";
+ event->group = "cgroup";
+ event->proto_field_id = 72;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
+ event->fields.push_back(MakeField("name", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_release";
+ event->group = "cgroup";
+ event->proto_field_id = 73;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("cname", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_rename";
+ event->group = "cgroup";
+ event->proto_field_id = 74;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("id", 2, kProtoInt32));
+ event->fields.push_back(MakeField("cname", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "cgroup_setup_root";
+ event->group = "cgroup";
+ event->proto_field_id = 75;
+ event->fields.push_back(MakeField("root", 1, kProtoInt32));
+ event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
+ event->fields.push_back(MakeField("name", 3, kProtoString));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_cmd_kickoff";
+ event->group = "mdss";
+ event->proto_field_id = 76;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_commit";
+ event->group = "mdss";
+ event->proto_field_id = 77;
+ event->fields.push_back(MakeField("num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("clk_rate", 3, kProtoUint32));
+ event->fields.push_back(MakeField("bandwidth", 4, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_set_ot";
+ event->group = "mdss";
+ event->proto_field_id = 78;
+ event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
+ event->fields.push_back(MakeField("xin_id", 2, kProtoUint32));
+ event->fields.push_back(MakeField("rd_lim", 3, kProtoUint32));
+ event->fields.push_back(MakeField("is_vbif_rt", 4, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_sspp_change";
+ event->group = "mdss";
+ event->proto_field_id = 79;
+ event->fields.push_back(MakeField("num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
+ event->fields.push_back(MakeField("stage", 4, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+ event->fields.push_back(MakeField("format", 6, kProtoUint32));
+ event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
+ event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
+ event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
+ event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
+ event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
+ event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
+ event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
+ event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
+ event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
+ event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "tracing_mark_write";
+ event->group = "mdss";
+ event->proto_field_id = 80;
+ event->fields.push_back(MakeField("pid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("trace_name", 2, kProtoString));
+ event->fields.push_back(MakeField("trace_begin", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_cmd_pingpong_done";
+ event->group = "mdss";
+ event->proto_field_id = 81;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("intf_num", 2, kProtoUint32));
+ event->fields.push_back(MakeField("pp_num", 3, kProtoUint32));
+ event->fields.push_back(MakeField("koff_cnt", 4, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_compare_bw";
+ event->group = "mdss";
+ event->proto_field_id = 82;
+ event->fields.push_back(MakeField("new_ab", 1, kProtoUint64));
+ event->fields.push_back(MakeField("new_ib", 2, kProtoUint64));
+ event->fields.push_back(MakeField("new_wb", 3, kProtoUint64));
+ event->fields.push_back(MakeField("old_ab", 4, kProtoUint64));
+ event->fields.push_back(MakeField("old_ib", 5, kProtoUint64));
+ event->fields.push_back(MakeField("old_wb", 6, kProtoUint64));
+ event->fields.push_back(MakeField("params_changed", 7, kProtoUint32));
+ event->fields.push_back(MakeField("update_bw", 8, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_set_panic_luts";
+ event->group = "mdss";
+ event->proto_field_id = 83;
+ event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
+ event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("mode", 3, kProtoUint32));
+ event->fields.push_back(MakeField("panic_lut", 4, kProtoUint32));
+ event->fields.push_back(MakeField("robust_lut", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_sspp_set";
+ event->group = "mdss";
+ event->proto_field_id = 84;
+ event->fields.push_back(MakeField("num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
+ event->fields.push_back(MakeField("stage", 4, kProtoUint32));
+ event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+ event->fields.push_back(MakeField("format", 6, kProtoUint32));
+ event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
+ event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
+ event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
+ event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
+ event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
+ event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
+ event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
+ event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
+ event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
+ event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_cmd_readptr_done";
+ event->group = "mdss";
+ event->proto_field_id = 85;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("koff_cnt", 2, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_misr_crc";
+ event->group = "mdss";
+ event->proto_field_id = 86;
+ event->fields.push_back(MakeField("block_id", 1, kProtoUint32));
+ event->fields.push_back(MakeField("vsync_cnt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("crc", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_set_qos_luts";
+ event->group = "mdss";
+ event->proto_field_id = 87;
+ event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
+ event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
+ event->fields.push_back(MakeField("intf", 3, kProtoUint32));
+ event->fields.push_back(MakeField("rot", 4, kProtoUint32));
+ event->fields.push_back(MakeField("fl", 5, kProtoUint32));
+ event->fields.push_back(MakeField("lut", 6, kProtoUint32));
+ event->fields.push_back(MakeField("linear", 7, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_trace_counter";
+ event->group = "mdss";
+ event->proto_field_id = 88;
+ event->fields.push_back(MakeField("pid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("counter_name", 2, kProtoString));
+ event->fields.push_back(MakeField("value", 3, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_cmd_release_bw";
+ event->group = "mdss";
+ event->proto_field_id = 89;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_mixer_update";
+ event->group = "mdss";
+ event->proto_field_id = 90;
+ event->fields.push_back(MakeField("mixer_num", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_set_wm_levels";
+ event->group = "mdss";
+ event->proto_field_id = 91;
+ event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
+ event->fields.push_back(MakeField("use_space", 2, kProtoUint32));
+ event->fields.push_back(MakeField("priority_bytes", 3, kProtoUint32));
+ event->fields.push_back(MakeField("wm0", 4, kProtoUint32));
+ event->fields.push_back(MakeField("wm1", 5, kProtoUint32));
+ event->fields.push_back(MakeField("wm2", 6, kProtoUint32));
+ event->fields.push_back(MakeField("mb_cnt", 7, kProtoUint32));
+ event->fields.push_back(MakeField("mb_size", 8, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_video_underrun_done";
+ event->group = "mdss";
+ event->proto_field_id = 92;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("underrun_cnt", 2, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_cmd_wait_pingpong";
+ event->group = "mdss";
+ event->proto_field_id = 93;
+ event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+ event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_prefill_calc";
+ event->group = "mdss";
+ event->proto_field_id = 94;
+ event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
+ event->fields.push_back(MakeField("latency_buf", 2, kProtoUint32));
+ event->fields.push_back(MakeField("ot", 3, kProtoUint32));
+ event->fields.push_back(MakeField("y_buf", 4, kProtoUint32));
+ event->fields.push_back(MakeField("y_scaler", 5, kProtoUint32));
+ event->fields.push_back(MakeField("pp_lines", 6, kProtoUint32));
+ event->fields.push_back(MakeField("pp_bytes", 7, kProtoUint32));
+ event->fields.push_back(MakeField("post_sc", 8, kProtoUint32));
+ event->fields.push_back(MakeField("fbc_bytes", 9, kProtoUint32));
+ event->fields.push_back(MakeField("prefill_bytes", 10, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mdp_perf_update_bus";
+ event->group = "mdss";
+ event->proto_field_id = 95;
+ event->fields.push_back(MakeField("client", 1, kProtoInt32));
+ event->fields.push_back(MakeField("ab_quota", 2, kProtoUint64));
+ event->fields.push_back(MakeField("ib_quota", 3, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "rotator_bw_ao_as_context";
+ event->group = "mdss";
+ event->proto_field_id = 96;
+ event->fields.push_back(MakeField("state", 1, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_filemap_add_to_page_cache";
+ event->group = "filemap";
+ event->proto_field_id = 97;
+ event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
+ event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("index", 3, kProtoUint64));
+ event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
+ event->fields.push_back(MakeField("page", 5, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_filemap_delete_from_page_cache";
+ event->group = "filemap";
+ event->proto_field_id = 98;
+ event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
+ event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
+ event->fields.push_back(MakeField("index", 3, kProtoUint64));
+ event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
+ event->fields.push_back(MakeField("page", 5, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_begin";
+ event->group = "compaction";
+ event->proto_field_id = 99;
+ event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
+ event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
+ event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
+ event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
+ event->fields.push_back(MakeField("sync", 5, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_defer_compaction";
+ event->group = "compaction";
+ event->proto_field_id = 100;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("idx", 2, kProtoUint32));
+ event->fields.push_back(MakeField("order", 3, kProtoInt32));
+ event->fields.push_back(MakeField("considered", 4, kProtoUint32));
+ event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
+ event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_deferred";
+ event->group = "compaction";
+ event->proto_field_id = 101;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("idx", 2, kProtoUint32));
+ event->fields.push_back(MakeField("order", 3, kProtoInt32));
+ event->fields.push_back(MakeField("considered", 4, kProtoUint32));
+ event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
+ event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_defer_reset";
+ event->group = "compaction";
+ event->proto_field_id = 102;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("idx", 2, kProtoUint32));
+ event->fields.push_back(MakeField("order", 3, kProtoInt32));
+ event->fields.push_back(MakeField("considered", 4, kProtoUint32));
+ event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
+ event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_end";
+ event->group = "compaction";
+ event->proto_field_id = 103;
+ event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
+ event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
+ event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
+ event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
+ event->fields.push_back(MakeField("sync", 5, kProtoUint32));
+ event->fields.push_back(MakeField("status", 6, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_finished";
+ event->group = "compaction";
+ event->proto_field_id = 104;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("idx", 2, kProtoUint32));
+ event->fields.push_back(MakeField("order", 3, kProtoInt32));
+ event->fields.push_back(MakeField("ret", 4, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_isolate_freepages";
+ event->group = "compaction";
+ event->proto_field_id = 105;
+ event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
+ event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
+ event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
+ event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_isolate_migratepages";
+ event->group = "compaction";
+ event->proto_field_id = 106;
+ event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
+ event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
+ event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
+ event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_kcompactd_sleep";
+ event->group = "compaction";
+ event->proto_field_id = 107;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_kcompactd_wake";
+ event->group = "compaction";
+ event->proto_field_id = 108;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("order", 2, kProtoInt32));
+ event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_migratepages";
+ event->group = "compaction";
+ event->proto_field_id = 109;
+ event->fields.push_back(MakeField("nr_migrated", 1, kProtoUint64));
+ event->fields.push_back(MakeField("nr_failed", 2, kProtoUint64));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_suitable";
+ event->group = "compaction";
+ event->proto_field_id = 110;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("idx", 2, kProtoUint32));
+ event->fields.push_back(MakeField("order", 3, kProtoInt32));
+ event->fields.push_back(MakeField("ret", 4, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_try_to_compact_pages";
+ event->group = "compaction";
+ event->proto_field_id = 111;
+ event->fields.push_back(MakeField("order", 1, kProtoInt32));
+ event->fields.push_back(MakeField("gfp_mask", 2, kProtoUint32));
+ event->fields.push_back(MakeField("mode", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "mm_compaction_wakeup_kcompactd";
+ event->group = "compaction";
+ event->proto_field_id = 112;
+ event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+ event->fields.push_back(MakeField("order", 2, kProtoInt32));
+ event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "suspend_resume";
+ event->group = "power";
+ event->proto_field_id = 113;
+ event->fields.push_back(MakeField("action", 1, kProtoString));
+ event->fields.push_back(MakeField("val", 2, kProtoInt32));
+ event->fields.push_back(MakeField("start", 3, kProtoUint32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
+ event->name = "sched_wakeup_new";
+ event->group = "sched";
+ event->proto_field_id = 114;
+ event->fields.push_back(MakeField("comm", 1, kProtoString));
+ event->fields.push_back(MakeField("pid", 2, kProtoInt32));
+ event->fields.push_back(MakeField("prio", 3, kProtoInt32));
+ event->fields.push_back(MakeField("success", 4, kProtoInt32));
+ event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+ }
+
+ {
+ events.emplace_back(Event{});
+ Event* event = &events.back();
event->name = "block_bio_backmerge";
event->group = "block";
event->proto_field_id = 115;
@@ -231,21 +1469,6 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "block_rq_issue";
- event->group = "block";
- event->proto_field_id = 45;
- event->fields.push_back(MakeField("dev", 1, kProtoUint64));
- event->fields.push_back(MakeField("sector", 2, kProtoUint64));
- event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
- event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
- event->fields.push_back(MakeField("rwbs", 5, kProtoString));
- event->fields.push_back(MakeField("comm", 6, kProtoString));
- event->fields.push_back(MakeField("cmd", 7, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
event->name = "block_rq_remap";
event->group = "block";
event->proto_field_id = 128;
@@ -322,346 +1545,6 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "cgroup_attach_task";
- event->group = "cgroup";
- event->proto_field_id = 67;
- event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
- event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
- event->fields.push_back(MakeField("pid", 3, kProtoInt32));
- event->fields.push_back(MakeField("comm", 4, kProtoString));
- event->fields.push_back(MakeField("cname", 5, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_destroy_root";
- event->group = "cgroup";
- event->proto_field_id = 72;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
- event->fields.push_back(MakeField("name", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_mkdir";
- event->group = "cgroup";
- event->proto_field_id = 68;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("id", 2, kProtoInt32));
- event->fields.push_back(MakeField("cname", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_release";
- event->group = "cgroup";
- event->proto_field_id = 73;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("id", 2, kProtoInt32));
- event->fields.push_back(MakeField("cname", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_remount";
- event->group = "cgroup";
- event->proto_field_id = 69;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
- event->fields.push_back(MakeField("name", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_rename";
- event->group = "cgroup";
- event->proto_field_id = 74;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("id", 2, kProtoInt32));
- event->fields.push_back(MakeField("cname", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_rmdir";
- event->group = "cgroup";
- event->proto_field_id = 70;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("id", 2, kProtoInt32));
- event->fields.push_back(MakeField("cname", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_setup_root";
- event->group = "cgroup";
- event->proto_field_id = 75;
- event->fields.push_back(MakeField("root", 1, kProtoInt32));
- event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
- event->fields.push_back(MakeField("name", 3, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cgroup_transfer_tasks";
- event->group = "cgroup";
- event->proto_field_id = 71;
- event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
- event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
- event->fields.push_back(MakeField("pid", 3, kProtoInt32));
- event->fields.push_back(MakeField("comm", 4, kProtoString));
- event->fields.push_back(MakeField("cname", 5, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_begin";
- event->group = "compaction";
- event->proto_field_id = 99;
- event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
- event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
- event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
- event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
- event->fields.push_back(MakeField("sync", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_defer_compaction";
- event->group = "compaction";
- event->proto_field_id = 100;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("idx", 2, kProtoUint32));
- event->fields.push_back(MakeField("order", 3, kProtoInt32));
- event->fields.push_back(MakeField("considered", 4, kProtoUint32));
- event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
- event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_defer_reset";
- event->group = "compaction";
- event->proto_field_id = 102;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("idx", 2, kProtoUint32));
- event->fields.push_back(MakeField("order", 3, kProtoInt32));
- event->fields.push_back(MakeField("considered", 4, kProtoUint32));
- event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
- event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_deferred";
- event->group = "compaction";
- event->proto_field_id = 101;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("idx", 2, kProtoUint32));
- event->fields.push_back(MakeField("order", 3, kProtoInt32));
- event->fields.push_back(MakeField("considered", 4, kProtoUint32));
- event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
- event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_end";
- event->group = "compaction";
- event->proto_field_id = 103;
- event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
- event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
- event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
- event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
- event->fields.push_back(MakeField("sync", 5, kProtoUint32));
- event->fields.push_back(MakeField("status", 6, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_finished";
- event->group = "compaction";
- event->proto_field_id = 104;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("idx", 2, kProtoUint32));
- event->fields.push_back(MakeField("order", 3, kProtoInt32));
- event->fields.push_back(MakeField("ret", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_isolate_freepages";
- event->group = "compaction";
- event->proto_field_id = 105;
- event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
- event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
- event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
- event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_isolate_migratepages";
- event->group = "compaction";
- event->proto_field_id = 106;
- event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
- event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
- event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
- event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_kcompactd_sleep";
- event->group = "compaction";
- event->proto_field_id = 107;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_kcompactd_wake";
- event->group = "compaction";
- event->proto_field_id = 108;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("order", 2, kProtoInt32));
- event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_migratepages";
- event->group = "compaction";
- event->proto_field_id = 109;
- event->fields.push_back(MakeField("nr_migrated", 1, kProtoUint64));
- event->fields.push_back(MakeField("nr_failed", 2, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_suitable";
- event->group = "compaction";
- event->proto_field_id = 110;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("idx", 2, kProtoUint32));
- event->fields.push_back(MakeField("order", 3, kProtoInt32));
- event->fields.push_back(MakeField("ret", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_try_to_compact_pages";
- event->group = "compaction";
- event->proto_field_id = 111;
- event->fields.push_back(MakeField("order", 1, kProtoInt32));
- event->fields.push_back(MakeField("gfp_mask", 2, kProtoUint32));
- event->fields.push_back(MakeField("mode", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_compaction_wakeup_kcompactd";
- event->group = "compaction";
- event->proto_field_id = 112;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("order", 2, kProtoInt32));
- event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_already";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 5;
- event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
- event->fields.push_back(MakeField("load", 2, kProtoUint64));
- event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
- event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
- event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_boost";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 6;
- event->fields.push_back(MakeField("s", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_notyet";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 7;
- event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
- event->fields.push_back(MakeField("load", 2, kProtoUint64));
- event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
- event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
- event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_setspeed";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 8;
- event->fields.push_back(MakeField("cpu_id", 1, kProtoUint32));
- event->fields.push_back(MakeField("targfreq", 2, kProtoUint64));
- event->fields.push_back(MakeField("actualfreq", 3, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_target";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 9;
- event->fields.push_back(MakeField("cpu_id", 1, kProtoUint64));
- event->fields.push_back(MakeField("load", 2, kProtoUint64));
- event->fields.push_back(MakeField("curtarg", 3, kProtoUint64));
- event->fields.push_back(MakeField("curactual", 4, kProtoUint64));
- event->fields.push_back(MakeField("newtarg", 5, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpufreq_interactive_unboost";
- event->group = "cpufreq_interactive";
- event->proto_field_id = 10;
- event->fields.push_back(MakeField("s", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
event->name = "ext4_alloc_da_blocks";
event->group = "ext4";
event->proto_field_id = 134;
@@ -753,6 +1636,7 @@
event->fields.push_back(MakeField("reserved_data_blocks", 4, kProtoInt32));
event->fields.push_back(MakeField("reserved_meta_blocks", 5, kProtoInt32));
event->fields.push_back(MakeField("mode", 6, kProtoUint32));
+ event->fields.push_back(MakeField("md_needed", 7, kProtoInt32));
}
{
@@ -775,32 +1659,6 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "ext4_da_write_begin";
- event->group = "ext4";
- event->proto_field_id = 41;
- event->fields.push_back(MakeField("dev", 1, kProtoUint64));
- event->fields.push_back(MakeField("ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("pos", 3, kProtoInt64));
- event->fields.push_back(MakeField("len", 4, kProtoUint32));
- event->fields.push_back(MakeField("flags", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "ext4_da_write_end";
- event->group = "ext4";
- event->proto_field_id = 42;
- event->fields.push_back(MakeField("dev", 1, kProtoUint64));
- event->fields.push_back(MakeField("ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("pos", 3, kProtoInt64));
- event->fields.push_back(MakeField("len", 4, kProtoUint32));
- event->fields.push_back(MakeField("copied", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
event->name = "ext4_da_write_pages";
event->group = "ext4";
event->proto_field_id = 142;
@@ -809,6 +1667,11 @@
event->fields.push_back(MakeField("first_page", 3, kProtoUint64));
event->fields.push_back(MakeField("nr_to_write", 4, kProtoInt64));
event->fields.push_back(MakeField("sync_mode", 5, kProtoInt32));
+ event->fields.push_back(MakeField("b_blocknr", 6, kProtoUint64));
+ event->fields.push_back(MakeField("b_size", 7, kProtoUint32));
+ event->fields.push_back(MakeField("b_state", 8, kProtoUint32));
+ event->fields.push_back(MakeField("io_done", 9, kProtoInt32));
+ event->fields.push_back(MakeField("pages_written", 10, kProtoInt32));
}
{
@@ -919,7 +1782,7 @@
event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
event->fields.push_back(MakeField("len", 4, kProtoUint32));
event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
- event->fields.push_back(MakeField("status", 6, kProtoUint32));
+ event->fields.push_back(MakeField("status", 6, kProtoUint64));
}
{
@@ -933,7 +1796,7 @@
event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
event->fields.push_back(MakeField("len", 4, kProtoUint32));
event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
- event->fields.push_back(MakeField("status", 6, kProtoUint32));
+ event->fields.push_back(MakeField("status", 6, kProtoUint64));
}
{
@@ -958,7 +1821,7 @@
event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
event->fields.push_back(MakeField("len", 4, kProtoUint32));
event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
- event->fields.push_back(MakeField("status", 6, kProtoUint32));
+ event->fields.push_back(MakeField("status", 6, kProtoUint64));
event->fields.push_back(MakeField("found", 7, kProtoInt32));
}
@@ -1224,6 +2087,7 @@
event->fields.push_back(MakeField("offset", 3, kProtoInt64));
event->fields.push_back(MakeField("len", 4, kProtoInt64));
event->fields.push_back(MakeField("mode", 5, kProtoInt32));
+ event->fields.push_back(MakeField("pos", 6, kProtoInt64));
}
{
@@ -1371,7 +2235,7 @@
event->fields.push_back(MakeField("dev", 1, kProtoUint64));
event->fields.push_back(MakeField("ino", 2, kProtoUint64));
event->fields.push_back(MakeField("index", 3, kProtoUint64));
- event->fields.push_back(MakeField("offset", 4, kProtoUint32));
+ event->fields.push_back(MakeField("offset", 4, kProtoUint64));
event->fields.push_back(MakeField("length", 5, kProtoUint32));
}
@@ -1385,6 +2249,7 @@
event->fields.push_back(MakeField("ip", 2, kProtoUint64));
event->fields.push_back(MakeField("blocks", 3, kProtoInt32));
event->fields.push_back(MakeField("rsv_blocks", 4, kProtoInt32));
+ event->fields.push_back(MakeField("nblocks", 5, kProtoInt32));
}
{
@@ -1407,7 +2272,7 @@
event->fields.push_back(MakeField("dev", 1, kProtoUint64));
event->fields.push_back(MakeField("ino", 2, kProtoUint64));
event->fields.push_back(MakeField("index", 3, kProtoUint64));
- event->fields.push_back(MakeField("offset", 4, kProtoUint32));
+ event->fields.push_back(MakeField("offset", 4, kProtoUint64));
event->fields.push_back(MakeField("length", 5, kProtoUint32));
}
@@ -1713,29 +2578,6 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "ext4_sync_file_enter";
- event->group = "ext4";
- event->proto_field_id = 43;
- event->fields.push_back(MakeField("dev", 1, kProtoUint64));
- event->fields.push_back(MakeField("ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("parent", 3, kProtoUint64));
- event->fields.push_back(MakeField("datasync", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "ext4_sync_file_exit";
- event->group = "ext4";
- event->proto_field_id = 44;
- event->fields.push_back(MakeField("dev", 1, kProtoUint64));
- event->fields.push_back(MakeField("ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("ret", 3, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
event->name = "ext4_sync_fs";
event->group = "ext4";
event->proto_field_id = 212;
@@ -1900,667 +2742,25 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "mm_filemap_add_to_page_cache";
- event->group = "filemap";
- event->proto_field_id = 97;
- event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
- event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("index", 3, kProtoUint64));
- event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_filemap_delete_from_page_cache";
- event->group = "filemap";
- event->proto_field_id = 98;
- event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
- event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
- event->fields.push_back(MakeField("index", 3, kProtoUint64));
- event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "print";
- event->group = "ftrace";
- event->proto_field_id = 3;
- event->fields.push_back(MakeField("ip", 1, kProtoUint64));
- event->fields.push_back(MakeField("buf", 2, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "i2c_read";
- event->group = "i2c";
- event->proto_field_id = 27;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
- event->fields.push_back(MakeField("addr", 3, kProtoUint32));
- event->fields.push_back(MakeField("flags", 4, kProtoUint32));
- event->fields.push_back(MakeField("len", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "i2c_reply";
- event->group = "i2c";
- event->proto_field_id = 30;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
- event->fields.push_back(MakeField("addr", 3, kProtoUint32));
- event->fields.push_back(MakeField("flags", 4, kProtoUint32));
- event->fields.push_back(MakeField("len", 5, kProtoUint32));
- event->fields.push_back(MakeField("buf", 6, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "i2c_result";
- event->group = "i2c";
- event->proto_field_id = 29;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("nr_msgs", 2, kProtoUint32));
- event->fields.push_back(MakeField("ret", 3, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "i2c_write";
- event->group = "i2c";
- event->proto_field_id = 28;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
- event->fields.push_back(MakeField("addr", 3, kProtoUint32));
- event->fields.push_back(MakeField("flags", 4, kProtoUint32));
- event->fields.push_back(MakeField("len", 5, kProtoUint32));
- event->fields.push_back(MakeField("buf", 6, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "smbus_read";
- event->group = "i2c";
- event->proto_field_id = 31;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("flags", 2, kProtoUint32));
- event->fields.push_back(MakeField("addr", 3, kProtoUint32));
- event->fields.push_back(MakeField("command", 4, kProtoUint32));
- event->fields.push_back(MakeField("protocol", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "smbus_reply";
- event->group = "i2c";
- event->proto_field_id = 34;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("addr", 2, kProtoUint32));
- event->fields.push_back(MakeField("flags", 3, kProtoUint32));
- event->fields.push_back(MakeField("command", 4, kProtoUint32));
- event->fields.push_back(MakeField("len", 5, kProtoUint32));
- event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "smbus_result";
- event->group = "i2c";
- event->proto_field_id = 33;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("addr", 2, kProtoUint32));
- event->fields.push_back(MakeField("flags", 3, kProtoUint32));
- event->fields.push_back(MakeField("read_write", 4, kProtoUint32));
- event->fields.push_back(MakeField("command", 5, kProtoUint32));
- event->fields.push_back(MakeField("res", 6, kProtoInt32));
- event->fields.push_back(MakeField("protocol", 7, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "smbus_write";
- event->group = "i2c";
- event->proto_field_id = 32;
- event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
- event->fields.push_back(MakeField("addr", 2, kProtoUint32));
- event->fields.push_back(MakeField("flags", 3, kProtoUint32));
- event->fields.push_back(MakeField("command", 4, kProtoUint32));
- event->fields.push_back(MakeField("len", 5, kProtoUint32));
- event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "ipi_entry";
- event->group = "ipi";
- event->proto_field_id = 21;
- event->fields.push_back(MakeField("reason", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "ipi_exit";
- event->group = "ipi";
- event->proto_field_id = 22;
- event->fields.push_back(MakeField("reason", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "ipi_raise";
- event->group = "ipi";
- event->proto_field_id = 23;
- event->fields.push_back(MakeField("target_cpus", 1, kProtoUint32));
- event->fields.push_back(MakeField("reason", 2, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "irq_handler_entry";
- event->group = "irq";
- event->proto_field_id = 36;
- event->fields.push_back(MakeField("irq", 1, kProtoInt32));
- event->fields.push_back(MakeField("name", 2, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "irq_handler_exit";
- event->group = "irq";
- event->proto_field_id = 37;
- event->fields.push_back(MakeField("irq", 1, kProtoInt32));
- event->fields.push_back(MakeField("ret", 2, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "softirq_entry";
- event->group = "irq";
- event->proto_field_id = 24;
- event->fields.push_back(MakeField("vec", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "softirq_exit";
- event->group = "irq";
- event->proto_field_id = 25;
- event->fields.push_back(MakeField("vec", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "softirq_raise";
- event->group = "irq";
- event->proto_field_id = 26;
- event->fields.push_back(MakeField("vec", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "lowmemory_kill";
- event->group = "lowmemorykiller";
- event->proto_field_id = 35;
- event->fields.push_back(MakeField("comm", 1, kProtoString));
- event->fields.push_back(MakeField("pid", 2, kProtoInt32));
- event->fields.push_back(MakeField("pagecache_size", 3, kProtoInt64));
- event->fields.push_back(MakeField("pagecache_limit", 4, kProtoInt64));
- event->fields.push_back(MakeField("free", 5, kProtoInt64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_cmd_kickoff";
- event->group = "mdss";
- event->proto_field_id = 76;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_cmd_pingpong_done";
- event->group = "mdss";
- event->proto_field_id = 81;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- event->fields.push_back(MakeField("intf_num", 2, kProtoUint32));
- event->fields.push_back(MakeField("pp_num", 3, kProtoUint32));
- event->fields.push_back(MakeField("koff_cnt", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_cmd_readptr_done";
- event->group = "mdss";
- event->proto_field_id = 85;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- event->fields.push_back(MakeField("koff_cnt", 2, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_cmd_release_bw";
- event->group = "mdss";
- event->proto_field_id = 89;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_cmd_wait_pingpong";
- event->group = "mdss";
- event->proto_field_id = 93;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_commit";
- event->group = "mdss";
- event->proto_field_id = 77;
- event->fields.push_back(MakeField("num", 1, kProtoUint32));
- event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
- event->fields.push_back(MakeField("clk_rate", 3, kProtoUint32));
- event->fields.push_back(MakeField("bandwidth", 4, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_compare_bw";
- event->group = "mdss";
- event->proto_field_id = 82;
- event->fields.push_back(MakeField("new_ab", 1, kProtoUint64));
- event->fields.push_back(MakeField("new_ib", 2, kProtoUint64));
- event->fields.push_back(MakeField("new_wb", 3, kProtoUint64));
- event->fields.push_back(MakeField("old_ab", 4, kProtoUint64));
- event->fields.push_back(MakeField("old_ib", 5, kProtoUint64));
- event->fields.push_back(MakeField("old_wb", 6, kProtoUint64));
- event->fields.push_back(MakeField("params_changed", 7, kProtoUint32));
- event->fields.push_back(MakeField("update_bw", 8, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_misr_crc";
- event->group = "mdss";
- event->proto_field_id = 86;
- event->fields.push_back(MakeField("block_id", 1, kProtoUint32));
- event->fields.push_back(MakeField("vsync_cnt", 2, kProtoUint32));
- event->fields.push_back(MakeField("crc", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_mixer_update";
- event->group = "mdss";
- event->proto_field_id = 90;
- event->fields.push_back(MakeField("mixer_num", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_prefill_calc";
- event->group = "mdss";
- event->proto_field_id = 94;
- event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
- event->fields.push_back(MakeField("latency_buf", 2, kProtoUint32));
- event->fields.push_back(MakeField("ot", 3, kProtoUint32));
- event->fields.push_back(MakeField("y_buf", 4, kProtoUint32));
- event->fields.push_back(MakeField("y_scaler", 5, kProtoUint32));
- event->fields.push_back(MakeField("pp_lines", 6, kProtoUint32));
- event->fields.push_back(MakeField("pp_bytes", 7, kProtoUint32));
- event->fields.push_back(MakeField("post_sc", 8, kProtoUint32));
- event->fields.push_back(MakeField("fbc_bytes", 9, kProtoUint32));
- event->fields.push_back(MakeField("prefill_bytes", 10, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_set_ot";
- event->group = "mdss";
- event->proto_field_id = 78;
- event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
- event->fields.push_back(MakeField("xin_id", 2, kProtoUint32));
- event->fields.push_back(MakeField("rd_lim", 3, kProtoUint32));
- event->fields.push_back(MakeField("is_vbif_rt", 4, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_set_panic_luts";
- event->group = "mdss";
- event->proto_field_id = 83;
- event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
- event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
- event->fields.push_back(MakeField("mode", 3, kProtoUint32));
- event->fields.push_back(MakeField("panic_lut", 4, kProtoUint32));
- event->fields.push_back(MakeField("robust_lut", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_set_qos_luts";
- event->group = "mdss";
- event->proto_field_id = 87;
- event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
- event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
- event->fields.push_back(MakeField("intf", 3, kProtoUint32));
- event->fields.push_back(MakeField("rot", 4, kProtoUint32));
- event->fields.push_back(MakeField("fl", 5, kProtoUint32));
- event->fields.push_back(MakeField("lut", 6, kProtoUint32));
- event->fields.push_back(MakeField("linear", 7, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_set_wm_levels";
- event->group = "mdss";
- event->proto_field_id = 91;
- event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
- event->fields.push_back(MakeField("use_space", 2, kProtoUint32));
- event->fields.push_back(MakeField("priority_bytes", 3, kProtoUint32));
- event->fields.push_back(MakeField("wm0", 4, kProtoUint32));
- event->fields.push_back(MakeField("wm1", 5, kProtoUint32));
- event->fields.push_back(MakeField("wm2", 6, kProtoUint32));
- event->fields.push_back(MakeField("mb_cnt", 7, kProtoUint32));
- event->fields.push_back(MakeField("mb_size", 8, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_perf_update_bus";
- event->group = "mdss";
- event->proto_field_id = 95;
- event->fields.push_back(MakeField("client", 1, kProtoInt32));
- event->fields.push_back(MakeField("ab_quota", 2, kProtoUint64));
- event->fields.push_back(MakeField("ib_quota", 3, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_sspp_change";
- event->group = "mdss";
- event->proto_field_id = 79;
- event->fields.push_back(MakeField("num", 1, kProtoUint32));
- event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
- event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
- event->fields.push_back(MakeField("stage", 4, kProtoUint32));
- event->fields.push_back(MakeField("flags", 5, kProtoUint32));
- event->fields.push_back(MakeField("format", 6, kProtoUint32));
- event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
- event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
- event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
- event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
- event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
- event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
- event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
- event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
- event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
- event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_sspp_set";
- event->group = "mdss";
- event->proto_field_id = 84;
- event->fields.push_back(MakeField("num", 1, kProtoUint32));
- event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
- event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
- event->fields.push_back(MakeField("stage", 4, kProtoUint32));
- event->fields.push_back(MakeField("flags", 5, kProtoUint32));
- event->fields.push_back(MakeField("format", 6, kProtoUint32));
- event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
- event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
- event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
- event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
- event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
- event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
- event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
- event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
- event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
- event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mdp_trace_counter";
- event->group = "mdss";
- event->proto_field_id = 88;
+ event->name = "task_newtask";
+ event->group = "task";
+ event->proto_field_id = 235;
event->fields.push_back(MakeField("pid", 1, kProtoInt32));
- event->fields.push_back(MakeField("counter_name", 2, kProtoString));
- event->fields.push_back(MakeField("value", 3, kProtoInt32));
+ event->fields.push_back(MakeField("comm", 2, kProtoString));
+ event->fields.push_back(MakeField("clone_flags", 3, kProtoUint64));
+ event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
}
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "mdp_video_underrun_done";
- event->group = "mdss";
- event->proto_field_id = 92;
- event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
- event->fields.push_back(MakeField("underrun_cnt", 2, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "rotator_bw_ao_as_context";
- event->group = "mdss";
- event->proto_field_id = 96;
- event->fields.push_back(MakeField("state", 1, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "tracing_mark_write";
- event->group = "mdss";
- event->proto_field_id = 80;
+ event->name = "task_rename";
+ event->group = "task";
+ event->proto_field_id = 236;
event->fields.push_back(MakeField("pid", 1, kProtoInt32));
- event->fields.push_back(MakeField("trace_name", 2, kProtoString));
- event->fields.push_back(MakeField("trace_begin", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "clock_disable";
- event->group = "power";
- event->proto_field_id = 15;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("state", 2, kProtoUint64));
- event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "clock_enable";
- event->group = "power";
- event->proto_field_id = 14;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("state", 2, kProtoUint64));
- event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "clock_set_rate";
- event->group = "power";
- event->proto_field_id = 16;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("state", 2, kProtoUint64));
- event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpu_frequency";
- event->group = "power";
- event->proto_field_id = 11;
- event->fields.push_back(MakeField("state", 1, kProtoUint32));
- event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpu_frequency_limits";
- event->group = "power";
- event->proto_field_id = 12;
- event->fields.push_back(MakeField("min_freq", 1, kProtoUint32));
- event->fields.push_back(MakeField("max_freq", 2, kProtoUint32));
- event->fields.push_back(MakeField("cpu_id", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "cpu_idle";
- event->group = "power";
- event->proto_field_id = 13;
- event->fields.push_back(MakeField("state", 1, kProtoUint32));
- event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "suspend_resume";
- event->group = "power";
- event->proto_field_id = 113;
- event->fields.push_back(MakeField("action", 1, kProtoString));
- event->fields.push_back(MakeField("val", 2, kProtoInt32));
- event->fields.push_back(MakeField("start", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_disable";
- event->group = "regulator";
- event->proto_field_id = 60;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_disable_complete";
- event->group = "regulator";
- event->proto_field_id = 61;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_enable";
- event->group = "regulator";
- event->proto_field_id = 62;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_enable_complete";
- event->group = "regulator";
- event->proto_field_id = 63;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_enable_delay";
- event->group = "regulator";
- event->proto_field_id = 64;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_set_voltage";
- event->group = "regulator";
- event->proto_field_id = 65;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("min", 2, kProtoInt32));
- event->fields.push_back(MakeField("max", 3, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "regulator_set_voltage_complete";
- event->group = "regulator";
- event->proto_field_id = 66;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("val", 2, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sched_blocked_reason";
- event->group = "sched";
- event->proto_field_id = 18;
- event->fields.push_back(MakeField("pid", 1, kProtoInt32));
- event->fields.push_back(MakeField("caller", 2, kProtoUint64));
- event->fields.push_back(MakeField("io_wait", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sched_cpu_hotplug";
- event->group = "sched";
- event->proto_field_id = 19;
- event->fields.push_back(MakeField("affected_cpu", 1, kProtoInt32));
- event->fields.push_back(MakeField("error", 2, kProtoInt32));
- event->fields.push_back(MakeField("status", 3, kProtoInt32));
+ event->fields.push_back(MakeField("oldcomm", 2, kProtoString));
+ event->fields.push_back(MakeField("newcomm", 3, kProtoString));
+ event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
}
{
@@ -2633,195 +2833,6 @@
{
events.emplace_back(Event{});
Event* event = &events.back();
- event->name = "sched_switch";
- event->group = "sched";
- event->proto_field_id = 4;
- event->fields.push_back(MakeField("prev_comm", 1, kProtoString));
- event->fields.push_back(MakeField("prev_pid", 2, kProtoInt32));
- event->fields.push_back(MakeField("prev_prio", 3, kProtoInt32));
- event->fields.push_back(MakeField("prev_state", 4, kProtoInt64));
- event->fields.push_back(MakeField("next_comm", 5, kProtoString));
- event->fields.push_back(MakeField("next_pid", 6, kProtoInt32));
- event->fields.push_back(MakeField("next_prio", 7, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sched_wakeup";
- event->group = "sched";
- event->proto_field_id = 17;
- event->fields.push_back(MakeField("comm", 1, kProtoString));
- event->fields.push_back(MakeField("pid", 2, kProtoInt32));
- event->fields.push_back(MakeField("prio", 3, kProtoInt32));
- event->fields.push_back(MakeField("success", 4, kProtoInt32));
- event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sched_wakeup_new";
- event->group = "sched";
- event->proto_field_id = 114;
- event->fields.push_back(MakeField("comm", 1, kProtoString));
- event->fields.push_back(MakeField("pid", 2, kProtoInt32));
- event->fields.push_back(MakeField("prio", 3, kProtoInt32));
- event->fields.push_back(MakeField("success", 4, kProtoInt32));
- event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sched_waking";
- event->group = "sched";
- event->proto_field_id = 20;
- event->fields.push_back(MakeField("comm", 1, kProtoString));
- event->fields.push_back(MakeField("pid", 2, kProtoInt32));
- event->fields.push_back(MakeField("prio", 3, kProtoInt32));
- event->fields.push_back(MakeField("success", 4, kProtoInt32));
- event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sync_pt";
- event->group = "sync";
- event->proto_field_id = 38;
- event->fields.push_back(MakeField("timeline", 1, kProtoString));
- event->fields.push_back(MakeField("value", 2, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sync_timeline";
- event->group = "sync";
- event->proto_field_id = 39;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("value", 2, kProtoString));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "sync_wait";
- event->group = "sync";
- event->proto_field_id = 40;
- event->fields.push_back(MakeField("name", 1, kProtoString));
- event->fields.push_back(MakeField("status", 2, kProtoInt32));
- event->fields.push_back(MakeField("begin", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "task_newtask";
- event->group = "task";
- event->proto_field_id = 235;
- event->fields.push_back(MakeField("pid", 1, kProtoInt32));
- event->fields.push_back(MakeField("comm", 2, kProtoString));
- event->fields.push_back(MakeField("clone_flags", 3, kProtoUint64));
- event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "task_rename";
- event->group = "task";
- event->proto_field_id = 236;
- event->fields.push_back(MakeField("pid", 1, kProtoInt32));
- event->fields.push_back(MakeField("oldcomm", 2, kProtoString));
- event->fields.push_back(MakeField("newcomm", 3, kProtoString));
- event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_vmscan_direct_reclaim_begin";
- event->group = "vmscan";
- event->proto_field_id = 46;
- event->fields.push_back(MakeField("order", 1, kProtoInt32));
- event->fields.push_back(MakeField("may_writepage", 2, kProtoInt32));
- event->fields.push_back(MakeField("gfp_flags", 3, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_vmscan_direct_reclaim_end";
- event->group = "vmscan";
- event->proto_field_id = 47;
- event->fields.push_back(MakeField("nr_reclaimed", 1, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_vmscan_kswapd_sleep";
- event->group = "vmscan";
- event->proto_field_id = 49;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "mm_vmscan_kswapd_wake";
- event->group = "vmscan";
- event->proto_field_id = 48;
- event->fields.push_back(MakeField("nid", 1, kProtoInt32));
- event->fields.push_back(MakeField("order", 2, kProtoInt32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "workqueue_activate_work";
- event->group = "workqueue";
- event->proto_field_id = 56;
- event->fields.push_back(MakeField("work", 1, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "workqueue_execute_end";
- event->group = "workqueue";
- event->proto_field_id = 57;
- event->fields.push_back(MakeField("work", 1, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "workqueue_execute_start";
- event->group = "workqueue";
- event->proto_field_id = 58;
- event->fields.push_back(MakeField("work", 1, kProtoUint64));
- event->fields.push_back(MakeField("function", 2, kProtoUint64));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
- event->name = "workqueue_queue_work";
- event->group = "workqueue";
- event->proto_field_id = 59;
- event->fields.push_back(MakeField("work", 1, kProtoUint64));
- event->fields.push_back(MakeField("function", 2, kProtoUint64));
- event->fields.push_back(MakeField("workqueue", 3, kProtoUint64));
- event->fields.push_back(MakeField("req_cpu", 4, kProtoUint32));
- event->fields.push_back(MakeField("cpu", 5, kProtoUint32));
- }
-
- {
- events.emplace_back(Event{});
- Event* event = &events.back();
event->name = "f2fs_do_submit_bio";
event->group = "f2fs";
event->proto_field_id = 243;
diff --git a/tools/ftrace_proto_gen/BUILD.gn b/tools/ftrace_proto_gen/BUILD.gn
index 9808ab2..4163b47 100644
--- a/tools/ftrace_proto_gen/BUILD.gn
+++ b/tools/ftrace_proto_gen/BUILD.gn
@@ -18,6 +18,7 @@
":ftrace_proto_gen_src",
"../../gn:default_deps",
"../../gn:gtest_deps",
+ "../../gn:protobuf_full_deps",
]
sources = [
"ftrace_proto_gen_unittest.cc",
@@ -25,24 +26,29 @@
}
source_set("ftrace_proto_gen_src") {
+ testonly = true
sources = [
"ftrace_proto_gen.cc",
"ftrace_proto_gen.h",
]
deps = [
"../../gn:default_deps",
+ "../../gn:protobuf_full_deps",
"../../src/base",
"../../src/ftrace_reader",
]
}
executable("ftrace_proto_gen") {
+ testonly = true
sources = [
"main.cc",
]
deps = [
":ftrace_proto_gen_src",
"../../gn:default_deps",
+ "../../gn:protobuf_full_deps",
+ "../../protos/perfetto/trace:lite",
"../../src/base",
"../../src/ftrace_reader",
]
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.cc b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
index c31a165..82a71d4 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
@@ -27,12 +27,38 @@
namespace {
-std::string GetLastPathElement(std::string data) {
- base::StringSplitter sp(std::move(data), '/');
- std::string last;
- while (sp.Next())
- last = sp.cur_token();
- return last;
+bool StartsWith(const std::string& str, const std::string& prefix) {
+ return str.compare(0, prefix.length(), prefix) == 0;
+}
+
+bool Contains(const std::string& haystack, const std::string& needle) {
+ return haystack.find(needle) != std::string::npos;
+}
+
+} // namespace
+
+FtraceEventName::FtraceEventName(const std::string& full_name) {
+ if (full_name == "removed") {
+ valid_ = false;
+ return;
+ }
+ name_ = full_name.substr(full_name.find('/') + 1, std::string::npos);
+ group_ = full_name.substr(0, full_name.find('/'));
+ valid_ = true;
+}
+
+bool FtraceEventName::valid() const {
+ return valid_;
+}
+
+const std::string& FtraceEventName::name() const {
+ PERFETTO_CHECK(valid_);
+ return name_;
+}
+
+const std::string& FtraceEventName::group() const {
+ PERFETTO_CHECK(valid_);
+ return group_;
}
std::string ToCamelCase(const std::string& s) {
@@ -54,16 +80,6 @@
return result;
}
-bool StartsWith(const std::string& str, const std::string& prefix) {
- return str.compare(0, prefix.length(), prefix) == 0;
-}
-
-bool Contains(const std::string& haystack, const std::string& needle) {
- return haystack.find(needle) != std::string::npos;
-}
-
-} // namespace
-
ProtoType ProtoType::GetSigned() const {
PERFETTO_CHECK(type == NUMERIC);
if (is_signed)
@@ -110,6 +126,27 @@
return {NUMERIC, size, is_signed};
}
+// static
+ProtoType ProtoType::FromDescriptor(
+ google::protobuf::FieldDescriptor::Type type) {
+ if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT64)
+ return Numeric(64, false);
+
+ if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT64)
+ return Numeric(64, true);
+
+ if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT32)
+ return Numeric(32, false);
+
+ if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT32)
+ return Numeric(32, true);
+
+ if (type == google::protobuf::FieldDescriptor::Type::TYPE_STRING)
+ return String();
+
+ return Invalid();
+}
+
ProtoType GetCommon(ProtoType one, ProtoType other) {
// Always need to prefer the LHS as it is the one already present
// in the proto.
@@ -124,18 +161,18 @@
return ProtoType::Numeric(std::max(one.size, other.size), one.is_signed);
}
-std::vector<std::string> GetFileLines(const std::string& filename) {
+std::vector<FtraceEventName> ReadWhitelist(const std::string& filename) {
std::string line;
- std::vector<std::string> lines;
+ std::vector<FtraceEventName> lines;
std::ifstream fin(filename, std::ios::in);
if (!fin) {
- fprintf(stderr, "Failed to open whitelist %s\n", filename.c_str());
+ fprintf(stderr, "failed to open whitelist %s\n", filename.c_str());
return lines;
}
while (std::getline(fin, line)) {
if (!StartsWith(line, "#"))
- lines.emplace_back(line);
+ lines.emplace_back(FtraceEventName(line));
}
return lines;
}
@@ -224,6 +261,7 @@
bool GenerateProto(const FtraceEvent& format, Proto* proto_out) {
proto_out->name = ToCamelCase(format.name) + "FtraceEvent";
+ proto_out->event_name = format.name;
std::set<std::string> seen;
// TODO(hjd): We should be cleverer about id assignment.
uint32_t i = 1;
@@ -245,7 +283,8 @@
return true;
}
-void GenerateFtraceEventProto(const std::vector<std::string>& raw_whitelist) {
+void GenerateFtraceEventProto(
+ const std::vector<FtraceEventName>& raw_whitelist) {
std::string output_path = "protos/perfetto/trace/ftrace/ftrace_event.proto";
std::ofstream fout(output_path.c_str(), std::ios::out);
fout << "// Autogenerated by:\n";
@@ -254,12 +293,11 @@
fout << R"(syntax = "proto2";)"
<< "\n";
fout << "option optimize_for = LITE_RUNTIME;\n\n";
- for (const std::string& event : raw_whitelist) {
- std::string last_elem = GetLastPathElement(event);
- if (event == "removed")
+ for (const FtraceEventName& event : raw_whitelist) {
+ if (!event.valid())
continue;
- fout << R"(import "perfetto/trace/ftrace/)" << last_elem << R"(.proto";)"
+ fout << R"(import "perfetto/trace/ftrace/)" << event.name() << R"(.proto";)"
<< "\n";
}
@@ -278,48 +316,34 @@
)";
int i = 3;
- for (const std::string& event : raw_whitelist) {
- std::string last_elem = GetLastPathElement(event);
- if (event == "removed") {
+ for (const FtraceEventName& event : raw_whitelist) {
+ if (!event.valid()) {
fout << " // removed field with id " << i << ";\n";
++i;
continue;
}
- fout << " " << ToCamelCase(last_elem) << "FtraceEvent " << last_elem
- << " = " << i << ";\n";
+ fout << " " << ToCamelCase(event.name()) << "FtraceEvent "
+ << event.name() << " = " << i << ";\n";
++i;
}
fout << " }\n";
fout << "}\n";
}
-std::set<std::string> GetWhitelistedEvents(
- const std::vector<std::string>& raw_whitelist) {
- std::set<std::string> whitelist;
- for (const std::string& line : raw_whitelist) {
- if (!StartsWith(line, "#") && line != "removed") {
- whitelist.insert(line);
- }
- }
- return whitelist;
-}
-
// Generates section of event_info.cc for a single event.
-std::string SingleEventInfo(perfetto::FtraceEvent format,
- perfetto::Proto proto,
+std::string SingleEventInfo(perfetto::Proto proto,
const std::string& group,
- const std::string& proto_field_id) {
+ const uint32_t proto_field_id) {
std::string s = "";
- s += " event->name = \"" + format.name + "\";\n";
+ s += " event->name = \"" + proto.event_name + "\";\n";
s += " event->group = \"" + group + "\";\n";
- s += " event->proto_field_id = " + proto_field_id + ";\n";
+ s += " event->proto_field_id = " + std::to_string(proto_field_id) + ";\n";
- for (const auto& p : proto.fields) {
- const Proto::Field& field = p.second;
- s += " event->fields.push_back(MakeField(\"" + field.name + "\", " +
- std::to_string(field.number) + ", kProto" +
- ToCamelCase(field.type.ToString()) + "));\n";
+ for (const auto& field : proto.SortedFields()) {
+ s += " event->fields.push_back(MakeField(\"" + field->name + "\", " +
+ std::to_string(field->number) + ", kProto" +
+ ToCamelCase(field->type.ToString()) + "));\n";
}
return s;
}
@@ -365,6 +389,29 @@
fout.close();
}
+Proto::Proto(std::string evt_name, const google::protobuf::Descriptor& desc)
+ : name(desc.name()), event_name(evt_name) {
+ for (int i = 0; i < desc.field_count(); ++i) {
+ const google::protobuf::FieldDescriptor* field = desc.field(i);
+ PERFETTO_CHECK(field);
+ AddField(Field{ProtoType::FromDescriptor(field->type()), field->name(),
+ uint32_t(field->number())});
+ }
+}
+
+std::vector<const Proto::Field*> Proto::SortedFields() {
+ std::vector<const Proto::Field*> sorted_fields;
+
+ for (const auto& p : fields) {
+ sorted_fields.emplace_back(&p.second);
+ }
+ std::sort(sorted_fields.begin(), sorted_fields.end(),
+ [](const Proto::Field* a, const Proto::Field* b) {
+ return a->number < b->number;
+ });
+ return sorted_fields;
+}
+
std::string Proto::ToString() {
std::string s = "// Autogenerated by:\n";
s += std::string("// ") + __FILE__ + "\n";
@@ -378,10 +425,9 @@
)";
s += "message " + name + " {\n";
- for (const auto& p : fields) {
- const Proto::Field& field = p.second;
- s += " optional " + field.type.ToString() + " " + field.name + " = " +
- std::to_string(field.number) + ";\n";
+ for (const auto field : SortedFields()) {
+ s += " optional " + field->type.ToString() + " " + field->name + " = " +
+ std::to_string(field->number) + ";\n";
}
s += "}\n";
return s;
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.h b/tools/ftrace_proto_gen/ftrace_proto_gen.h
index 8ca5bfa..deeed67 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.h
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.h
@@ -17,6 +17,7 @@
#ifndef TOOLS_FTRACE_PROTO_GEN_FTRACE_PROTO_GEN_H_
#define TOOLS_FTRACE_PROTO_GEN_FTRACE_PROTO_GEN_H_
+#include <google/protobuf/descriptor.h>
#include <map>
#include <set>
#include <string>
@@ -26,6 +27,20 @@
namespace perfetto {
+class FtraceEventName {
+ public:
+ explicit FtraceEventName(const std::string& full_name);
+
+ bool valid() const;
+ const std::string& name() const;
+ const std::string& group() const;
+
+ private:
+ bool valid_;
+ std::string name_;
+ std::string group_;
+};
+
struct ProtoType {
enum Type { INVALID, NUMERIC, STRING };
Type type;
@@ -38,24 +53,29 @@
static ProtoType Invalid();
static ProtoType String();
static ProtoType Numeric(uint16_t size, bool is_signed);
+ static ProtoType FromDescriptor(google::protobuf::FieldDescriptor::Type type);
};
struct Proto {
+ Proto() = default;
+ Proto(std::string evt_name, const google::protobuf::Descriptor& desc);
struct Field {
ProtoType type;
std::string name;
uint32_t number;
};
std::string name;
+ std::string event_name;
std::map<std::string, Field> fields;
std::string ToString();
void MergeFrom(const Proto& other);
void AddField(Proto::Field field);
-
+ std::vector<const Field*> SortedFields();
uint32_t max_id = 0;
};
+std::string ToCamelCase(const std::string& s);
ProtoType GetCommon(ProtoType one, ProtoType other);
void PrintFtraceEventProtoAdditions(const std::set<std::string>& events);
void PrintEventFormatterMain(const std::set<std::string>& events);
@@ -67,14 +87,12 @@
bool GenerateProto(const FtraceEvent& format, Proto* proto_out);
ProtoType InferProtoType(const FtraceEvent::Field& field);
-std::vector<std::string> GetFileLines(const std::string& filename);
-std::set<std::string> GetWhitelistedEvents(
- const std::vector<std::string>& raw_whitelist);
-void GenerateFtraceEventProto(const std::vector<std::string>& raw_whitelist);
-std::string SingleEventInfo(perfetto::FtraceEvent format,
- perfetto::Proto proto,
+std::vector<FtraceEventName> ReadWhitelist(const std::string& filename);
+void GenerateFtraceEventProto(
+ const std::vector<FtraceEventName>& raw_whitelist);
+std::string SingleEventInfo(perfetto::Proto proto,
const std::string& group,
- const std::string& proto_field_id);
+ const uint32_t proto_field_id);
void GenerateEventInfo(const std::vector<std::string>& events_info);
} // namespace perfetto
diff --git a/tools/ftrace_proto_gen/main.cc b/tools/ftrace_proto_gen/main.cc
index 2a806a5..a0b3a97 100644
--- a/tools/ftrace_proto_gen/main.cc
+++ b/tools/ftrace_proto_gen/main.cc
@@ -14,6 +14,7 @@
* limitations under the License.
*/
+#include <getopt.h>
#include <sys/stat.h>
#include <fstream>
#include <memory>
@@ -22,26 +23,80 @@
#include <sstream>
#include <string>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/descriptor.pb.h>
#include "perfetto/base/file_utils.h"
#include "perfetto/ftrace_reader/format_parser.h"
#include "perfetto/trace/ftrace/ftrace_event.pbzero.h"
#include "tools/ftrace_proto_gen/ftrace_proto_gen.h"
-int main(int argc, const char** argv) {
- if (argc != 4) {
- fprintf(stderr, "Usage: ./%s whitelist_dir input_dir output_dir\n",
+int main(int argc, char** argv) {
+ static struct option long_options[] = {
+ {"whitelist_path", required_argument, nullptr, 'w'},
+ {"output_dir", required_argument, nullptr, 'o'},
+ {"proto_descriptor", required_argument, nullptr, 'd'},
+ {"update_build_files", no_argument, nullptr, 'b'},
+ };
+
+ int option_index;
+ int c;
+
+ std::string whitelist_path;
+ std::string output_dir;
+ std::string proto_descriptor;
+ bool update_build_files = false;
+
+ while ((c = getopt_long(argc, argv, "", long_options, &option_index)) != -1) {
+ switch (c) {
+ case 'w':
+ whitelist_path = optarg;
+ break;
+ case 'o':
+ output_dir = optarg;
+ break;
+ case 'd':
+ proto_descriptor = optarg;
+ break;
+ case 'b':
+ update_build_files = true;
+ break;
+ }
+ }
+
+ PERFETTO_CHECK(!whitelist_path.empty());
+ PERFETTO_CHECK(!output_dir.empty());
+ PERFETTO_CHECK(!proto_descriptor.empty());
+
+ if (optind >= argc) {
+ fprintf(stderr,
+ "Usage: ./%s -w whitelist_dir -o output_dir -d proto_descriptor "
+ "input_dir...\n",
argv[0]);
return 1;
}
- const char* whitelist_path = argv[1];
- const char* input_dir = argv[2];
- const char* output_dir = argv[3];
-
- std::vector<std::string> whitelist = perfetto::GetFileLines(whitelist_path);
- std::set<std::string> events = perfetto::GetWhitelistedEvents(whitelist);
+ std::vector<perfetto::FtraceEventName> whitelist =
+ perfetto::ReadWhitelist(whitelist_path);
std::vector<std::string> events_info;
+ google::protobuf::DescriptorPool descriptor_pool;
+ descriptor_pool.AllowUnknownDependencies();
+ {
+ google::protobuf::FileDescriptorSet file_descriptor_set;
+ std::string descriptor_bytes;
+ if (!perfetto::base::ReadFile(proto_descriptor, &descriptor_bytes)) {
+ fprintf(stderr, "Failed to open %s\n", proto_descriptor.c_str());
+ return 1;
+ }
+ file_descriptor_set.ParseFromString(descriptor_bytes);
+
+ for (const auto& d : file_descriptor_set.file()) {
+ PERFETTO_CHECK(descriptor_pool.BuildFile(d));
+ }
+ }
+
+ perfetto::GenerateFtraceEventProto(whitelist);
+
std::string ftrace;
if (!perfetto::base::ReadFile(
"protos/perfetto/trace/ftrace/ftrace_event.proto", &ftrace)) {
@@ -51,18 +106,18 @@
}
std::set<std::string> new_events;
- for (const auto& event : events) {
- std::string file_name =
- event.substr(event.find('/') + 1, std::string::npos);
+ for (const auto& event : whitelist) {
+ if (!event.valid())
+ continue;
struct stat buf;
- if (stat(("protos/perfetto/trace/ftrace/" + file_name + ".proto").c_str(),
- &buf) == -1) {
- new_events.insert(file_name);
+ if (stat(
+ ("protos/perfetto/trace/ftrace/" + event.name() + ".proto").c_str(),
+ &buf) == -1) {
+ new_events.insert(event.name());
}
}
if (!new_events.empty()) {
- perfetto::GenerateFtraceEventProto(whitelist);
perfetto::PrintEventFormatterMain(new_events);
perfetto::PrintEventFormatterUsingStatements(new_events);
perfetto::PrintEventFormatterFunctions(new_events);
@@ -71,49 +126,58 @@
"tools/ftrace_proto_gen/ftrace_inode_handler.cc\n");
}
- for (auto event : events) {
- std::string proto_file_name =
- event.substr(event.find('/') + 1, std::string::npos) + ".proto";
- std::string group = event.substr(0, event.find('/'));
- std::string input_path = input_dir + event + std::string("/format");
+ // The first id used for events in FtraceEvent proto is 3.
+ // Because we increment before the loop, this is 2.
+ uint32_t proto_field_id = 2;
+ for (auto event : whitelist) {
+ ++proto_field_id;
+ if (!event.valid())
+ continue;
+ std::string proto_file_name = event.name() + ".proto";
std::string output_path = output_dir + std::string("/") + proto_file_name;
- std::string contents;
- if (!perfetto::base::ReadFile(input_path, &contents)) {
- fprintf(stderr, "Failed to open %s\n", input_path.c_str());
- return 1;
- }
-
- perfetto::FtraceEvent format;
- if (!perfetto::ParseFtraceEvent(contents, &format)) {
- fprintf(stderr, "Could not parse file %s.\n", input_path.c_str());
- return 1;
- }
-
+ std::string proto_name =
+ perfetto::ToCamelCase(event.name()) + "FtraceEvent";
perfetto::Proto proto;
- if (!perfetto::GenerateProto(format, &proto)) {
- fprintf(stderr, "Could not generate proto for file %s\n",
- input_path.c_str());
- return 1;
- }
+ proto.name = proto_name;
+ proto.event_name = event.name();
+ const google::protobuf::Descriptor* d =
+ descriptor_pool.FindMessageTypeByName("perfetto.protos." + proto_name);
+ if (d)
+ proto = perfetto::Proto(event.name(), *d);
+ else
+ PERFETTO_LOG("Did not find %s", proto_name.c_str());
+ for (int i = optind; i < argc; ++i) {
+ std::string input_dir = argv[i];
+ std::string input_path = input_dir + event.group() + "/" + event.name() +
+ std::string("/format");
- std::smatch match;
- std::regex event_regex(format.name + "\\s*=\\s*(\\d+)");
- std::regex_search(ftrace, match, event_regex);
- std::string proto_field_id = match[1].str().c_str();
- if (proto_field_id == "") {
- fprintf(stderr,
- "Could not find proto_field_id for %s in ftrace_event.proto. "
- "Please add it.\n",
- format.name.c_str());
- return 1;
+ std::string contents;
+ if (!perfetto::base::ReadFile(input_path, &contents)) {
+ fprintf(stderr, "Failed to open %s\n", input_path.c_str());
+ continue;
+ }
+
+ perfetto::FtraceEvent format;
+ if (!perfetto::ParseFtraceEvent(contents, &format)) {
+ fprintf(stderr, "Could not parse file %s.\n", input_path.c_str());
+ return 1;
+ }
+
+ perfetto::Proto event_proto;
+ if (!perfetto::GenerateProto(format, &event_proto)) {
+ fprintf(stderr, "Could not generate proto for file %s\n",
+ input_path.c_str());
+ return 1;
+ }
+ proto.MergeFrom(event_proto);
}
if (!new_events.empty())
- PrintInodeHandlerMain(format.name, proto);
+ PrintInodeHandlerMain(proto.name, proto);
events_info.push_back(
- perfetto::SingleEventInfo(format, proto, group, proto_field_id));
+ perfetto::SingleEventInfo(proto, event.group(), proto_field_id));
std::ofstream fout(output_path.c_str(), std::ios::out);
if (!fout) {
@@ -126,4 +190,38 @@
}
perfetto::GenerateEventInfo(events_info);
+
+ if (update_build_files) {
+ std::ofstream f(output_dir + "/all_protos.gni");
+
+ f << R"(# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Autogenerated by ftrace_proto_gen.
+
+ftrace_proto_names = [
+ "ftrace_event.proto",
+ "ftrace_event_bundle.proto",
+ "test_bundle_wrapper.proto",
+)";
+ for (const perfetto::FtraceEventName& event : whitelist) {
+ if (!event.valid())
+ continue;
+ f << " \"" << event.name() << ".proto\",\n";
+ }
+ f << "]\n";
+ f.close();
+ PERFETTO_CHECK(!f.fail());
+ }
}
diff --git a/tools/update_protos.py b/tools/update_protos.py
deleted file mode 100755
index 8444662..0000000
--- a/tools/update_protos.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2017 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Generates proto definitions from ftrace format files.
-# Arguments:
-# path to ftrace_proto_gen
-# path to input directory full of format files
-# path to output directory for proto definitions files
-# Either:
-# --whitelist PATH : path to a list of events to generate
-# --event EVENT : a single event to generate
-#
-# Example:
-# ./tools/update_protos.py
-# out/linux/ftrace_proto_gen
-# libftrace/test/data/android_seed_N2F62_3.10.49
-# protos/ftrace
-# --whitelist tools/ftrace_proto_gen/event_whitelist
-
-
-from __future__ import print_function
-import argparse
-import os
-import subprocess
-import sys
-import tempfile
-
-
-HEADER = """# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""
-
-
-def command(*args):
- subprocess.check_call(args, stdout=sys.stdout, stderr=sys.stderr)
-
-def main():
- parser = argparse.ArgumentParser(description='Generate protos.')
- parser.add_argument('ftrace_proto_gen',
- help='an ftrace_proto_gen binary')
- parser.add_argument('input_dir',
- help='input directory')
- parser.add_argument('output_dir',
- help='output directory')
- parser.add_argument('--whitelist', dest='whitelist_path',
- default=None,
- help='path to whitelist of events')
- parser.add_argument('--event', dest='event',
- default=None,
- help='output directory')
- parser.add_argument('--update-build-files', dest='update_build_files',
- action='store_true',
- help='should update metadata')
- args = parser.parse_args()
-
- gen_path = args.ftrace_proto_gen
- input_dir = args.input_dir
- output_dir = args.output_dir
- whitelist_path = args.whitelist_path
- update_build_files = args.update_build_files
-
- if whitelist_path is not None and not os.path.isfile(whitelist_path):
- parser.error('Whitelist file {} does not exist.'.format(whitelist_path))
- if not os.path.isdir(input_dir):
- parser.error('Input directory {} does not exist.'.format(input_dir))
- if not os.path.isdir(output_dir):
- parser.error('Output directory {} does not exist.'.format(output_dir))
-
- # Run ftrace_proto_gen
- command(gen_path, whitelist_path, input_dir, output_dir)
-
- if update_build_files:
- names = sorted(os.listdir(output_dir))
- names = [name for name in names if name.endswith('.proto')]
- names = ''.join([' "{}",\n'.format(name) for name in names])
- body = 'ftrace_proto_names = [\n{}]'.format(names)
- with open(os.path.join(output_dir, 'all_protos.gni'), 'wb') as f:
- f.write(HEADER)
- f.write(body)
-
- return 0
-
-
-if __name__ == '__main__':
- sys.exit(main())