diff --git a/Android.bp b/Android.bp index 11cd68223c0..71674433c2d 100644 --- a/Android.bp +++ b/Android.bp @@ -47,6 +47,8 @@ cc_binary { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -83,6 +85,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -150,6 +153,8 @@ cc_binary { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -186,6 +191,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -346,6 +352,8 @@ cc_library_shared { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -382,6 +390,7 @@ cc_library_shared { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -457,6 +466,8 @@ cc_library_shared { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -493,6 +504,7 @@ cc_library_shared { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -581,6 +593,8 @@ cc_library_shared { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -617,6 +631,7 @@ cc_library_shared { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -667,6 +682,7 @@ cc_library_shared { ":perfetto_src_traced_probes_ftrace_ftrace", ":perfetto_src_traced_probes_ftrace_tracefs", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", + ":perfetto_src_traced_probes_journald_journald", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -710,6 +726,8 @@ cc_library_shared { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -746,6 +764,7 @@ cc_library_shared { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -873,6 +892,8 @@ cc_library { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -909,6 +930,7 @@ cc_library { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -977,6 +999,8 @@ cc_library { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -1013,6 +1037,7 @@ cc_library { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -1091,6 +1116,8 @@ cc_library_static { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -1127,6 +1154,7 @@ cc_library_static { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -1196,6 +1224,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -1232,6 +1262,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -1262,6 +1293,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -1298,6 +1331,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -1446,6 +1480,8 @@ cc_binary { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -1482,6 +1518,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -1540,6 +1577,8 @@ cc_binary { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -1576,6 +1615,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -1667,6 +1707,7 @@ filegroup { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -1746,6 +1787,7 @@ java_library { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -1809,6 +1851,8 @@ cc_library_static { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -1855,6 +1899,8 @@ cc_library_static { ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_cpp_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_cpp_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_cpp_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_cpp_gen", @@ -1917,6 +1963,7 @@ cc_library_static { ":perfetto_src_traced_probes_ftrace_ftrace", ":perfetto_src_traced_probes_ftrace_tracefs", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", + ":perfetto_src_traced_probes_journald_journald", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -1972,6 +2019,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -2018,6 +2067,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -2059,6 +2110,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -2105,6 +2158,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -2179,6 +2234,8 @@ cc_library_static { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -2225,6 +2282,8 @@ cc_library_static { ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_cpp_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_cpp_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_cpp_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_cpp_gen", @@ -2286,6 +2345,7 @@ cc_library_static { ":perfetto_src_traced_probes_ftrace_ftrace", ":perfetto_src_traced_probes_ftrace_tracefs", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", + ":perfetto_src_traced_probes_journald_journald", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -2333,6 +2393,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -2379,6 +2441,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -2420,6 +2484,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -2466,6 +2532,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -2786,6 +2854,9 @@ cc_test { ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_lite_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_lite_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_lite_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_lite_gen", @@ -2858,6 +2929,9 @@ cc_test { ":perfetto_protos_perfetto_trace_interned_data_cpp_gen", ":perfetto_protos_perfetto_trace_interned_data_lite_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_cpp_gen", + ":perfetto_protos_perfetto_trace_linux_lite_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_cpp_gen", ":perfetto_protos_perfetto_trace_minimal_lite_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", @@ -3119,6 +3193,7 @@ cc_test { ":perfetto_src_traced_probes_ftrace_test_support", ":perfetto_src_traced_probes_ftrace_tracefs", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", + ":perfetto_src_traced_probes_journald_journald", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -3200,6 +3275,9 @@ cc_test { "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_lite_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_lite_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_lite_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_lite_gen_headers", @@ -3272,6 +3350,9 @@ cc_test { "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_lite_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_lite_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", @@ -3472,6 +3553,7 @@ filegroup { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -3663,6 +3745,7 @@ filegroup { "protos/perfetto/trace/gpu/vulkan_api_event.proto", "protos/perfetto/trace/gpu/vulkan_memory_event.proto", "protos/perfetto/trace/interned_data/interned_data.proto", + "protos/perfetto/trace/linux/journald_event.proto", "protos/perfetto/trace/memory_graph.proto", "protos/perfetto/trace/perfetto/perfetto_metatrace.proto", "protos/perfetto/trace/perfetto/trace_provenance.proto", @@ -4562,6 +4645,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -4606,6 +4690,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -4700,6 +4785,7 @@ genrule { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -5287,6 +5373,136 @@ genrule { ], } +// GN: //protos/perfetto/config/linux:cpp +filegroup { + name: "perfetto_protos_perfetto_config_linux_cpp", + srcs: [ + "protos/perfetto/config/linux/journald_config.proto", + ], +} + +// GN: //protos/perfetto/config/linux:cpp +genrule { + name: "perfetto_protos_perfetto_config_linux_cpp_gen", + srcs: [ + ":perfetto_protos_perfetto_config_linux_cpp", + ], + tools: [ + "aprotoc", + "perfetto_src_protozero_protoc_plugin_cppgen_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_cpp)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.gen.cc", + ], +} + +// GN: //protos/perfetto/config/linux:cpp +genrule { + name: "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_config_linux_cpp", + ], + tools: [ + "aprotoc", + "perfetto_src_protozero_protoc_plugin_cppgen_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_cpp)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.gen.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + +// GN: //protos/perfetto/config/linux:lite +filegroup { + name: "perfetto_protos_perfetto_config_linux_lite", + srcs: [ + "protos/perfetto/config/linux/journald_config.proto", + ], +} + +// GN: //protos/perfetto/config/linux:lite +genrule { + name: "perfetto_protos_perfetto_config_linux_lite_gen", + srcs: [ + ":perfetto_protos_perfetto_config_linux_lite", + ], + tools: [ + "aprotoc", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_lite)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.pb.cc", + ], +} + +// GN: //protos/perfetto/config/linux:lite +genrule { + name: "perfetto_protos_perfetto_config_linux_lite_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_config_linux_lite", + ], + tools: [ + "aprotoc", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_lite)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.pb.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + +// GN: //protos/perfetto/config/linux:zero +filegroup { + name: "perfetto_protos_perfetto_config_linux_zero", + srcs: [ + "protos/perfetto/config/linux/journald_config.proto", + ], +} + +// GN: //protos/perfetto/config/linux:zero +genrule { + name: "perfetto_protos_perfetto_config_linux_zero_gen", + srcs: [ + ":perfetto_protos_perfetto_config_linux_zero", + ], + tools: [ + "aprotoc", + "protozero_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_zero)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.pbzero.cc", + ], +} + +// GN: //protos/perfetto/config/linux:zero +genrule { + name: "perfetto_protos_perfetto_config_linux_zero_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_config_linux_zero", + ], + tools: [ + "aprotoc", + "protozero_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_config_linux_zero)", + out: [ + "external/perfetto/protos/perfetto/config/linux/journald_config.pbzero.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + // GN: //protos/perfetto/config:lite filegroup { name: "perfetto_protos_perfetto_config_lite", @@ -5316,6 +5532,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -5359,6 +5576,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -6796,6 +7014,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -6840,6 +7059,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -6899,6 +7119,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -6936,6 +7157,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -6987,6 +7209,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -7026,6 +7249,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -8805,6 +9029,7 @@ genrule { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -8955,6 +9180,7 @@ genrule { "protos/perfetto/trace/gpu/vulkan_api_event.proto", "protos/perfetto/trace/gpu/vulkan_memory_event.proto", "protos/perfetto/trace/interned_data/interned_data.proto", + "protos/perfetto/trace/linux/journald_event.proto", "protos/perfetto/trace/memory_graph.proto", "protos/perfetto/trace/perfetto/perfetto_metatrace.proto", "protos/perfetto/trace/perfetto/trace_provenance.proto", @@ -10955,6 +11181,136 @@ genrule { ], } +// GN: //protos/perfetto/trace/linux:cpp +filegroup { + name: "perfetto_protos_perfetto_trace_linux_cpp", + srcs: [ + "protos/perfetto/trace/linux/journald_event.proto", + ], +} + +// GN: //protos/perfetto/trace/linux:cpp +genrule { + name: "perfetto_protos_perfetto_trace_linux_cpp_gen", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_cpp", + ], + tools: [ + "aprotoc", + "perfetto_src_protozero_protoc_plugin_cppgen_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_cpp)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.gen.cc", + ], +} + +// GN: //protos/perfetto/trace/linux:cpp +genrule { + name: "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_cpp", + ], + tools: [ + "aprotoc", + "perfetto_src_protozero_protoc_plugin_cppgen_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location perfetto_src_protozero_protoc_plugin_cppgen_plugin) --plugin_out=wrapper_namespace=gen:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_cpp)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.gen.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + +// GN: //protos/perfetto/trace/linux:lite +filegroup { + name: "perfetto_protos_perfetto_trace_linux_lite", + srcs: [ + "protos/perfetto/trace/linux/journald_event.proto", + ], +} + +// GN: //protos/perfetto/trace/linux:lite +genrule { + name: "perfetto_protos_perfetto_trace_linux_lite_gen", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_lite", + ], + tools: [ + "aprotoc", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_lite)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.pb.cc", + ], +} + +// GN: //protos/perfetto/trace/linux:lite +genrule { + name: "perfetto_protos_perfetto_trace_linux_lite_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_lite", + ], + tools: [ + "aprotoc", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --cpp_out=lite=true:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_lite)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.pb.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + +// GN: //protos/perfetto/trace/linux:zero +filegroup { + name: "perfetto_protos_perfetto_trace_linux_zero", + srcs: [ + "protos/perfetto/trace/linux/journald_event.proto", + ], +} + +// GN: //protos/perfetto/trace/linux:zero +genrule { + name: "perfetto_protos_perfetto_trace_linux_zero_gen", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_zero", + ], + tools: [ + "aprotoc", + "protozero_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_zero)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.pbzero.cc", + ], +} + +// GN: //protos/perfetto/trace/linux:zero +genrule { + name: "perfetto_protos_perfetto_trace_linux_zero_gen_headers", + srcs: [ + ":perfetto_protos_perfetto_trace_linux_zero", + ], + tools: [ + "aprotoc", + "protozero_plugin", + ], + cmd: "mkdir -p $(genDir)/external/perfetto/ && $(location aprotoc) --proto_path=external/perfetto --plugin=protoc-gen-plugin=$(location protozero_plugin) --plugin_out=wrapper_namespace=pbzero:$(genDir)/external/perfetto/ $(locations :perfetto_protos_perfetto_trace_linux_zero)", + out: [ + "external/perfetto/protos/perfetto/trace/linux/journald_event.pbzero.h", + ], + export_include_dirs: [ + ".", + "protos", + ], +} + // GN: //protos/perfetto/trace:minimal_cpp filegroup { name: "perfetto_protos_perfetto_trace_minimal_cpp", @@ -10977,6 +11333,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -11014,6 +11371,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -11064,6 +11422,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -11100,6 +11459,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -11150,6 +11510,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -11187,6 +11548,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -11246,6 +11608,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -11267,6 +11630,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_cpp", ":perfetto_protos_perfetto_trace_gpu_cpp", ":perfetto_protos_perfetto_trace_interned_data_cpp", + ":perfetto_protos_perfetto_trace_linux_cpp", ":perfetto_protos_perfetto_trace_minimal_cpp", ":perfetto_protos_perfetto_trace_non_minimal_cpp", ":perfetto_protos_perfetto_trace_perfetto_cpp", @@ -11310,6 +11674,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_cpp", ":perfetto_protos_perfetto_config_inode_file_cpp", ":perfetto_protos_perfetto_config_interceptors_cpp", + ":perfetto_protos_perfetto_config_linux_cpp", ":perfetto_protos_perfetto_config_power_cpp", ":perfetto_protos_perfetto_config_priority_boost_cpp", ":perfetto_protos_perfetto_config_process_stats_cpp", @@ -11331,6 +11696,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_cpp", ":perfetto_protos_perfetto_trace_gpu_cpp", ":perfetto_protos_perfetto_trace_interned_data_cpp", + ":perfetto_protos_perfetto_trace_linux_cpp", ":perfetto_protos_perfetto_trace_minimal_cpp", ":perfetto_protos_perfetto_trace_non_minimal_cpp", ":perfetto_protos_perfetto_trace_perfetto_cpp", @@ -11394,6 +11760,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -11416,6 +11783,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_lite", ":perfetto_protos_perfetto_trace_gpu_lite", ":perfetto_protos_perfetto_trace_interned_data_lite", + ":perfetto_protos_perfetto_trace_linux_lite", ":perfetto_protos_perfetto_trace_minimal_lite", ":perfetto_protos_perfetto_trace_non_minimal_lite", ":perfetto_protos_perfetto_trace_perfetto_lite", @@ -11457,6 +11825,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_lite", ":perfetto_protos_perfetto_config_inode_file_lite", ":perfetto_protos_perfetto_config_interceptors_lite", + ":perfetto_protos_perfetto_config_linux_lite", ":perfetto_protos_perfetto_config_lite", ":perfetto_protos_perfetto_config_power_lite", ":perfetto_protos_perfetto_config_priority_boost_lite", @@ -11479,6 +11848,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_lite", ":perfetto_protos_perfetto_trace_gpu_lite", ":perfetto_protos_perfetto_trace_interned_data_lite", + ":perfetto_protos_perfetto_trace_linux_lite", ":perfetto_protos_perfetto_trace_minimal_lite", ":perfetto_protos_perfetto_trace_non_minimal_lite", ":perfetto_protos_perfetto_trace_perfetto_lite", @@ -11541,6 +11911,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -11563,6 +11934,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_zero", ":perfetto_protos_perfetto_trace_gpu_zero", ":perfetto_protos_perfetto_trace_interned_data_zero", + ":perfetto_protos_perfetto_trace_linux_zero", ":perfetto_protos_perfetto_trace_minimal_zero", ":perfetto_protos_perfetto_trace_non_minimal_zero", ":perfetto_protos_perfetto_trace_perfetto_zero", @@ -11605,6 +11977,7 @@ genrule { ":perfetto_protos_perfetto_config_gpu_zero", ":perfetto_protos_perfetto_config_inode_file_zero", ":perfetto_protos_perfetto_config_interceptors_zero", + ":perfetto_protos_perfetto_config_linux_zero", ":perfetto_protos_perfetto_config_power_zero", ":perfetto_protos_perfetto_config_priority_boost_zero", ":perfetto_protos_perfetto_config_process_stats_zero", @@ -11627,6 +12000,7 @@ genrule { ":perfetto_protos_perfetto_trace_generic_kernel_zero", ":perfetto_protos_perfetto_trace_gpu_zero", ":perfetto_protos_perfetto_trace_interned_data_zero", + ":perfetto_protos_perfetto_trace_linux_zero", ":perfetto_protos_perfetto_trace_minimal_zero", ":perfetto_protos_perfetto_trace_non_minimal_zero", ":perfetto_protos_perfetto_trace_perfetto_zero", @@ -18715,6 +19089,7 @@ cc_library_static { ":perfetto_protos_perfetto_config_gpu_zero_gen", ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_zero_gen", ":perfetto_protos_perfetto_config_process_stats_zero_gen", @@ -18742,6 +19117,7 @@ cc_library_static { ":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -18957,6 +19333,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -18984,6 +19361,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -19051,6 +19429,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -19078,6 +19457,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -20047,6 +20427,22 @@ filegroup { ], } +// GN: //src/traced/probes/journald:journald +filegroup { + name: "perfetto_src_traced_probes_journald_journald", + srcs: [ + "src/traced/probes/journald/journald_data_source.cc", + ], +} + +// GN: //src/traced/probes/journald:unittests +filegroup { + name: "perfetto_src_traced_probes_journald_unittests", + srcs: [ + "src/traced/probes/journald/journald_data_source_unittest.cc", + ], +} + // GN: //src/traced/probes/metatrace:metatrace filegroup { name: "perfetto_src_traced_probes_metatrace_metatrace", @@ -20646,6 +21042,7 @@ java_library { "protos/perfetto/config/inode_file/inode_file_config.proto", "protos/perfetto/config/interceptor_config.proto", "protos/perfetto/config/interceptors/console_config.proto", + "protos/perfetto/config/linux/journald_config.proto", "protos/perfetto/config/power/android_power_config.proto", "protos/perfetto/config/priority_boost/priority_boost_config.proto", "protos/perfetto/config/process_stats/process_stats_config.proto", @@ -20796,6 +21193,7 @@ java_library { "protos/perfetto/trace/gpu/vulkan_api_event.proto", "protos/perfetto/trace/gpu/vulkan_memory_event.proto", "protos/perfetto/trace/interned_data/interned_data.proto", + "protos/perfetto/trace/linux/journald_event.proto", "protos/perfetto/trace/memory_graph.proto", "protos/perfetto/trace/perfetto/perfetto_metatrace.proto", "protos/perfetto/trace/perfetto/trace_provenance.proto", @@ -20918,6 +21316,7 @@ cc_library_static { ":perfetto_protos_perfetto_config_gpu_lite_gen", ":perfetto_protos_perfetto_config_inode_file_lite_gen", ":perfetto_protos_perfetto_config_interceptors_lite_gen", + ":perfetto_protos_perfetto_config_linux_lite_gen", ":perfetto_protos_perfetto_config_lite_gen", ":perfetto_protos_perfetto_config_power_lite_gen", ":perfetto_protos_perfetto_config_priority_boost_lite_gen", @@ -20940,6 +21339,7 @@ cc_library_static { ":perfetto_protos_perfetto_trace_generic_kernel_lite_gen", ":perfetto_protos_perfetto_trace_gpu_lite_gen", ":perfetto_protos_perfetto_trace_interned_data_lite_gen", + ":perfetto_protos_perfetto_trace_linux_lite_gen", ":perfetto_protos_perfetto_trace_minimal_lite_gen", ":perfetto_protos_perfetto_trace_non_minimal_lite_gen", ":perfetto_protos_perfetto_trace_perfetto_lite_gen", @@ -20965,6 +21365,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_lite_gen_headers", "perfetto_protos_perfetto_config_inode_file_lite_gen_headers", "perfetto_protos_perfetto_config_interceptors_lite_gen_headers", + "perfetto_protos_perfetto_config_linux_lite_gen_headers", "perfetto_protos_perfetto_config_lite_gen_headers", "perfetto_protos_perfetto_config_power_lite_gen_headers", "perfetto_protos_perfetto_config_priority_boost_lite_gen_headers", @@ -20987,6 +21388,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_generic_kernel_lite_gen_headers", "perfetto_protos_perfetto_trace_gpu_lite_gen_headers", "perfetto_protos_perfetto_trace_interned_data_lite_gen_headers", + "perfetto_protos_perfetto_trace_linux_lite_gen_headers", "perfetto_protos_perfetto_trace_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_perfetto_lite_gen_headers", @@ -21007,6 +21409,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_lite_gen_headers", "perfetto_protos_perfetto_config_inode_file_lite_gen_headers", "perfetto_protos_perfetto_config_interceptors_lite_gen_headers", + "perfetto_protos_perfetto_config_linux_lite_gen_headers", "perfetto_protos_perfetto_config_lite_gen_headers", "perfetto_protos_perfetto_config_power_lite_gen_headers", "perfetto_protos_perfetto_config_priority_boost_lite_gen_headers", @@ -21029,6 +21432,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_generic_kernel_lite_gen_headers", "perfetto_protos_perfetto_trace_gpu_lite_gen_headers", "perfetto_protos_perfetto_trace_interned_data_lite_gen_headers", + "perfetto_protos_perfetto_trace_linux_lite_gen_headers", "perfetto_protos_perfetto_trace_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_perfetto_lite_gen_headers", @@ -21124,6 +21528,9 @@ cc_test { ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_lite_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_lite_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_lite_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_lite_gen", @@ -21198,6 +21605,9 @@ cc_test { ":perfetto_protos_perfetto_trace_interned_data_cpp_gen", ":perfetto_protos_perfetto_trace_interned_data_lite_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_cpp_gen", + ":perfetto_protos_perfetto_trace_linux_lite_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_cpp_gen", ":perfetto_protos_perfetto_trace_minimal_lite_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", @@ -21567,6 +21977,8 @@ cc_test { ":perfetto_src_traced_probes_ftrace_unittests", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", ":perfetto_src_traced_probes_initial_display_state_unittests", + ":perfetto_src_traced_probes_journald_journald", + ":perfetto_src_traced_probes_journald_unittests", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -21656,6 +22068,9 @@ cc_test { "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_lite_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_lite_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_lite_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_lite_gen_headers", @@ -21730,6 +22145,9 @@ cc_test { "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_lite_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_lite_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_lite_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", @@ -21903,6 +22321,8 @@ cc_library_static { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -21949,6 +22369,8 @@ cc_library_static { ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_cpp_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_cpp_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_cpp_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_cpp_gen", @@ -22010,6 +22432,7 @@ cc_library_static { ":perfetto_src_traced_probes_ftrace_ftrace", ":perfetto_src_traced_probes_ftrace_tracefs", ":perfetto_src_traced_probes_initial_display_state_initial_display_state", + ":perfetto_src_traced_probes_journald_journald", ":perfetto_src_traced_probes_metatrace_metatrace", ":perfetto_src_traced_probes_packages_list_packages_list", ":perfetto_src_traced_probes_packages_list_packages_list_parser", @@ -22057,6 +22480,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -22103,6 +22528,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -22144,6 +22571,8 @@ cc_library_static { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -22190,6 +22619,8 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_cpp_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_cpp_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_cpp_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_cpp_gen_headers", @@ -22342,6 +22773,7 @@ cc_library_static { ":perfetto_protos_perfetto_config_gpu_zero_gen", ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_zero_gen", ":perfetto_protos_perfetto_config_process_stats_zero_gen", @@ -22369,6 +22801,7 @@ cc_library_static { ":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -22569,6 +23002,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -22596,6 +23030,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -22660,6 +23095,7 @@ cc_library_static { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -22687,6 +23123,7 @@ cc_library_static { "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -22846,6 +23283,7 @@ cc_binary { ":perfetto_protos_perfetto_config_gpu_zero_gen", ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_zero_gen", ":perfetto_protos_perfetto_config_process_stats_zero_gen", @@ -22868,6 +23306,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -22900,6 +23339,7 @@ cc_binary { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -22922,6 +23362,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -22976,6 +23417,7 @@ cc_binary_host { ":perfetto_protos_perfetto_config_gpu_zero_gen", ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_zero_gen", ":perfetto_protos_perfetto_config_process_stats_zero_gen", @@ -23003,6 +23445,7 @@ cc_binary_host { ":perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -23214,6 +23657,7 @@ cc_binary_host { "perfetto_protos_perfetto_config_gpu_zero_gen_headers", "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_zero_gen_headers", "perfetto_protos_perfetto_config_process_stats_zero_gen_headers", @@ -23241,6 +23685,7 @@ cc_binary_host { "perfetto_protos_perfetto_trace_gpu_gpu_track_event_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -23382,6 +23827,8 @@ cc_binary { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -23418,6 +23865,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -23502,6 +23950,8 @@ cc_binary { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -23538,6 +23988,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -23617,6 +24068,8 @@ cc_binary { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -23653,6 +24106,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -23704,6 +24158,8 @@ cc_binary { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -23740,6 +24196,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", @@ -23835,6 +24292,8 @@ cc_binary { ":perfetto_protos_perfetto_config_inode_file_zero_gen", ":perfetto_protos_perfetto_config_interceptors_cpp_gen", ":perfetto_protos_perfetto_config_interceptors_zero_gen", + ":perfetto_protos_perfetto_config_linux_cpp_gen", + ":perfetto_protos_perfetto_config_linux_zero_gen", ":perfetto_protos_perfetto_config_power_cpp_gen", ":perfetto_protos_perfetto_config_power_zero_gen", ":perfetto_protos_perfetto_config_priority_boost_cpp_gen", @@ -23871,6 +24330,7 @@ cc_binary { ":perfetto_protos_perfetto_trace_generic_kernel_zero_gen", ":perfetto_protos_perfetto_trace_gpu_zero_gen", ":perfetto_protos_perfetto_trace_interned_data_zero_gen", + ":perfetto_protos_perfetto_trace_linux_zero_gen", ":perfetto_protos_perfetto_trace_minimal_zero_gen", ":perfetto_protos_perfetto_trace_non_minimal_zero_gen", ":perfetto_protos_perfetto_trace_perfetto_zero_gen", @@ -23925,6 +24385,8 @@ cc_binary { "perfetto_protos_perfetto_config_inode_file_zero_gen_headers", "perfetto_protos_perfetto_config_interceptors_cpp_gen_headers", "perfetto_protos_perfetto_config_interceptors_zero_gen_headers", + "perfetto_protos_perfetto_config_linux_cpp_gen_headers", + "perfetto_protos_perfetto_config_linux_zero_gen_headers", "perfetto_protos_perfetto_config_power_cpp_gen_headers", "perfetto_protos_perfetto_config_power_zero_gen_headers", "perfetto_protos_perfetto_config_priority_boost_cpp_gen_headers", @@ -23961,6 +24423,7 @@ cc_binary { "perfetto_protos_perfetto_trace_generic_kernel_zero_gen_headers", "perfetto_protos_perfetto_trace_gpu_zero_gen_headers", "perfetto_protos_perfetto_trace_interned_data_zero_gen_headers", + "perfetto_protos_perfetto_trace_linux_zero_gen_headers", "perfetto_protos_perfetto_trace_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_non_minimal_zero_gen_headers", "perfetto_protos_perfetto_trace_perfetto_zero_gen_headers", diff --git a/BUILD b/BUILD index aa3437a0ab1..94a3537b127 100644 --- a/BUILD +++ b/BUILD @@ -223,6 +223,8 @@ perfetto_cc_library( ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_cpp", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_cpp", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_cpp", @@ -258,6 +260,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -309,6 +312,7 @@ perfetto_cc_binary( ":protos_perfetto_config_gpu_cpp", ":protos_perfetto_config_inode_file_cpp", ":protos_perfetto_config_interceptors_cpp", + ":protos_perfetto_config_linux_cpp", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_priority_boost_cpp", ":protos_perfetto_config_process_stats_cpp", @@ -579,6 +583,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -606,6 +611,7 @@ perfetto_cc_library( ":protos_perfetto_trace_gpu_gpu_track_event_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -879,6 +885,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -906,6 +913,7 @@ perfetto_cc_library( ":protos_perfetto_trace_gpu_gpu_track_event_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -996,6 +1004,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -1018,6 +1027,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -1068,6 +1078,8 @@ perfetto_cc_binary( ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_cpp", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_cpp", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_cpp", @@ -1101,6 +1113,7 @@ perfetto_cc_binary( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -1158,6 +1171,7 @@ perfetto_cc_library( ":src_traced_probes_ftrace_ftrace", ":src_traced_probes_ftrace_tracefs", ":src_traced_probes_initial_display_state_initial_display_state", + ":src_traced_probes_journald_journald", ":src_traced_probes_metatrace_metatrace", ":src_traced_probes_packages_list_packages_list", ":src_traced_probes_packages_list_packages_list_parser", @@ -1206,6 +1220,8 @@ perfetto_cc_library( ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_cpp", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_cpp", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_cpp", @@ -1241,6 +1257,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -5407,6 +5424,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -5429,6 +5447,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -5482,6 +5501,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -5504,6 +5524,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -6151,6 +6172,15 @@ perfetto_filegroup( ], ) +# GN target: //src/traced/probes/journald:journald +perfetto_filegroup( + name = "src_traced_probes_journald_journald", + srcs = [ + "src/traced/probes/journald/journald_data_source.cc", + "src/traced/probes/journald/journald_data_source.h", + ], +) + # GN target: //src/traced/probes/metatrace:metatrace perfetto_filegroup( name = "src_traced_probes_metatrace_metatrace", @@ -6693,6 +6723,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -6775,6 +6806,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -6797,6 +6829,7 @@ perfetto_proto_library( ":protos_perfetto_trace_generic_kernel_protos", ":protos_perfetto_trace_gpu_protos", ":protos_perfetto_trace_interned_data_protos", + ":protos_perfetto_trace_linux_protos", ":protos_perfetto_trace_minimal_protos", ":protos_perfetto_trace_non_minimal_protos", ":protos_perfetto_trace_perfetto_protos", @@ -7328,6 +7361,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero_h", ":protos_perfetto_config_inode_file_zero_h", ":protos_perfetto_config_interceptors_zero_h", + ":protos_perfetto_config_linux_zero_h", ":protos_perfetto_config_power_zero_h", ":protos_perfetto_config_priority_boost_zero_h", ":protos_perfetto_config_process_stats_zero_h", @@ -7350,6 +7384,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero_h", ":protos_perfetto_trace_gpu_zero_h", ":protos_perfetto_trace_interned_data_zero_h", + ":protos_perfetto_trace_linux_zero_h", ":protos_perfetto_trace_minimal_zero_h", ":protos_perfetto_trace_non_minimal_zero_h", ":protos_perfetto_trace_perfetto_zero_h", @@ -7371,6 +7406,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -7393,6 +7429,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -7557,6 +7594,7 @@ perfetto_cc_protocpp_library( ":protos_perfetto_config_gpu_cpp", ":protos_perfetto_config_inode_file_cpp", ":protos_perfetto_config_interceptors_cpp", + ":protos_perfetto_config_linux_cpp", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_priority_boost_cpp", ":protos_perfetto_config_process_stats_cpp", @@ -7702,6 +7740,33 @@ perfetto_cc_protozero_library( ], ) +# GN target: //protos/perfetto/config/linux:cpp +perfetto_cc_protocpp_library( + name = "protos_perfetto_config_linux_cpp", + deps = [ + ":protos_perfetto_config_linux_protos", + ], +) + +# GN target: //protos/perfetto/config/linux:source_set +perfetto_proto_library( + name = "protos_perfetto_config_linux_protos", + srcs = [ + "protos/perfetto/config/linux/journald_config.proto", + ], + visibility = [ + PERFETTO_CONFIG.proto_library_visibility, + ], +) + +# GN target: //protos/perfetto/config/linux:zero +perfetto_cc_protozero_library( + name = "protos_perfetto_config_linux_zero", + deps = [ + ":protos_perfetto_config_linux_protos", + ], +) + # GN target: //protos/perfetto/config/power:cpp perfetto_cc_protocpp_library( name = "protos_perfetto_config_power_cpp", @@ -7848,6 +7913,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -8052,6 +8118,7 @@ perfetto_cc_protozero_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -8079,6 +8146,7 @@ perfetto_cc_protocpp_library( ":protos_perfetto_config_gpu_cpp", ":protos_perfetto_config_inode_file_cpp", ":protos_perfetto_config_interceptors_cpp", + ":protos_perfetto_config_linux_cpp", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_priority_boost_cpp", ":protos_perfetto_config_process_stats_cpp", @@ -8106,6 +8174,7 @@ perfetto_cc_ipc_library( ":protos_perfetto_config_gpu_cpp", ":protos_perfetto_config_inode_file_cpp", ":protos_perfetto_config_interceptors_cpp", + ":protos_perfetto_config_linux_cpp", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_priority_boost_cpp", ":protos_perfetto_config_process_stats_cpp", @@ -8141,6 +8210,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -9025,6 +9095,25 @@ perfetto_cc_protozero_library( ], ) +# GN target: //protos/perfetto/trace/linux:source_set +perfetto_proto_library( + name = "protos_perfetto_trace_linux_protos", + srcs = [ + "protos/perfetto/trace/linux/journald_event.proto", + ], + visibility = [ + PERFETTO_CONFIG.proto_library_visibility, + ], +) + +# GN target: //protos/perfetto/trace/linux:zero +perfetto_cc_protozero_library( + name = "protos_perfetto_trace_linux_zero", + deps = [ + ":protos_perfetto_trace_linux_protos", + ], +) + # GN target: //protos/perfetto/trace:minimal_source_set perfetto_proto_library( name = "protos_perfetto_trace_minimal_protos", @@ -9044,6 +9133,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -9070,6 +9160,7 @@ perfetto_cc_protozero_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -9112,6 +9203,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -9134,6 +9226,7 @@ perfetto_proto_library( ":protos_perfetto_trace_generic_kernel_protos", ":protos_perfetto_trace_gpu_protos", ":protos_perfetto_trace_interned_data_protos", + ":protos_perfetto_trace_linux_protos", ":protos_perfetto_trace_minimal_protos", ":protos_perfetto_trace_perfetto_protos", ":protos_perfetto_trace_power_protos", @@ -9161,6 +9254,7 @@ perfetto_cc_protozero_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -9183,6 +9277,7 @@ perfetto_cc_protozero_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_protos", ":protos_perfetto_trace_perfetto_zero", @@ -9341,6 +9436,7 @@ perfetto_proto_library( ":protos_perfetto_config_gpu_protos", ":protos_perfetto_config_inode_file_protos", ":protos_perfetto_config_interceptors_protos", + ":protos_perfetto_config_linux_protos", ":protos_perfetto_config_power_protos", ":protos_perfetto_config_priority_boost_protos", ":protos_perfetto_config_process_stats_protos", @@ -9363,6 +9459,7 @@ perfetto_proto_library( ":protos_perfetto_trace_generic_kernel_protos", ":protos_perfetto_trace_gpu_protos", ":protos_perfetto_trace_interned_data_protos", + ":protos_perfetto_trace_linux_protos", ":protos_perfetto_trace_minimal_protos", ":protos_perfetto_trace_non_minimal_protos", ":protos_perfetto_trace_perfetto_protos", @@ -9803,6 +9900,8 @@ perfetto_cc_library( ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_cpp", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_cpp", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_cpp", @@ -9838,6 +9937,7 @@ perfetto_cc_library( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -9912,6 +10012,8 @@ perfetto_cc_binary( ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_cpp", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_cpp", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_cpp", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_cpp", @@ -9947,6 +10049,7 @@ perfetto_cc_binary( ":protos_perfetto_trace_generic_kernel_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -10173,6 +10276,7 @@ perfetto_cc_library( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -10200,6 +10304,7 @@ perfetto_cc_library( ":protos_perfetto_trace_gpu_gpu_track_event_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", @@ -10480,6 +10585,7 @@ perfetto_cc_binary( ":protos_perfetto_config_gpu_zero", ":protos_perfetto_config_inode_file_zero", ":protos_perfetto_config_interceptors_zero", + ":protos_perfetto_config_linux_zero", ":protos_perfetto_config_power_zero", ":protos_perfetto_config_priority_boost_zero", ":protos_perfetto_config_process_stats_zero", @@ -10507,6 +10613,7 @@ perfetto_cc_binary( ":protos_perfetto_trace_gpu_gpu_track_event_zero", ":protos_perfetto_trace_gpu_zero", ":protos_perfetto_trace_interned_data_zero", + ":protos_perfetto_trace_linux_zero", ":protos_perfetto_trace_minimal_zero", ":protos_perfetto_trace_non_minimal_zero", ":protos_perfetto_trace_perfetto_zero", diff --git a/protos/perfetto/config/BUILD.gn b/protos/perfetto/config/BUILD.gn index aba2b725183..69ec9441337 100644 --- a/protos/perfetto/config/BUILD.gn +++ b/protos/perfetto/config/BUILD.gn @@ -27,6 +27,7 @@ perfetto_proto_library("@TYPE@") { "gpu:@TYPE@", "inode_file:@TYPE@", "interceptors:@TYPE@", + "linux:@TYPE@", "power:@TYPE@", "priority_boost:@TYPE@", "process_stats:@TYPE@", diff --git a/protos/perfetto/config/data_source_config.proto b/protos/perfetto/config/data_source_config.proto index 0dceb7cb88f..b278ce2e378 100644 --- a/protos/perfetto/config/data_source_config.proto +++ b/protos/perfetto/config/data_source_config.proto @@ -61,6 +61,7 @@ import "protos/perfetto/config/test_config.proto"; import "protos/perfetto/config/track_event/track_event_config.proto"; import "protos/perfetto/config/system_info/system_info_config.proto"; import "protos/perfetto/config/chrome/histogram_samples.proto"; +import "protos/perfetto/config/linux/journald_config.proto"; import "protos/perfetto/config/qnx/qnx_config.proto"; // The configuration that is passed to each data source when starting tracing. @@ -305,6 +306,9 @@ message DataSourceConfig { // Data source name: android.aflags optional AndroidAflagsConfig android_aflags_config = 140 [lazy = true]; + // Data source name: linux.systemd_journald + optional SystemdJournaldConfig journald_config = 141 [lazy = true]; + // Data source name: qnx.kernel optional QnxConfig qnx_config = 150 [lazy = true]; diff --git a/protos/perfetto/config/linux/BUILD.gn b/protos/perfetto/config/linux/BUILD.gn new file mode 100644 index 00000000000..7a23f79036d --- /dev/null +++ b/protos/perfetto/config/linux/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright (C) 2026 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. + +import("../../../../gn/proto_library.gni") + +perfetto_proto_library("@TYPE@") { + sources = [ "journald_config.proto" ] +} diff --git a/protos/perfetto/config/linux/journald_config.proto b/protos/perfetto/config/linux/journald_config.proto new file mode 100644 index 00000000000..cfa4976da6a --- /dev/null +++ b/protos/perfetto/config/linux/journald_config.proto @@ -0,0 +1,33 @@ +// Copyright (C) 2026 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. + +syntax = "proto2"; + +package perfetto.protos; + +// Configuration for the "linux.systemd_journald" data source. +// Next field id: 4 +message SystemdJournaldConfig { + // Minimum syslog priority level to capture (inclusive). + // 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG. + // Default (0 / unset): capture all priorities (equivalent to 7). + optional uint32 min_prio = 1; + + // If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER + // matches one of these strings. + repeated string filter_identifiers = 2; + + // If non-empty, only capture journal entries from these systemd unit names. + repeated string filter_units = 3; +} diff --git a/protos/perfetto/trace/BUILD.gn b/protos/perfetto/trace/BUILD.gn index ce961d8b5f5..7ed9e988409 100644 --- a/protos/perfetto/trace/BUILD.gn +++ b/protos/perfetto/trace/BUILD.gn @@ -91,6 +91,7 @@ perfetto_proto_library("non_minimal_@TYPE@") { "generic_kernel:@TYPE@", "gpu:@TYPE@", "interned_data:@TYPE@", + "linux:@TYPE@", "perfetto:@TYPE@", "power:@TYPE@", "profiling:@TYPE@", diff --git a/protos/perfetto/trace/linux/BUILD.gn b/protos/perfetto/trace/linux/BUILD.gn new file mode 100644 index 00000000000..96957401767 --- /dev/null +++ b/protos/perfetto/trace/linux/BUILD.gn @@ -0,0 +1,19 @@ +# Copyright (C) 2026 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. + +import("../../../../gn/proto_library.gni") + +perfetto_proto_library("@TYPE@") { + sources = [ "journald_event.proto" ] +} diff --git a/protos/perfetto/trace/linux/journald_event.proto b/protos/perfetto/trace/linux/journald_event.proto new file mode 100644 index 00000000000..737bfa957b8 --- /dev/null +++ b/protos/perfetto/trace/linux/journald_event.proto @@ -0,0 +1,66 @@ +// Copyright (C) 2026 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. + +syntax = "proto2"; + +package perfetto.protos; + +// A journald log event packet, collected from the Linux systemd journal. +// Emitted by the "linux.systemd_journald" data source in traced_probes. +// Next field id: 13, statistics starting at 20 +message SystemdJournaldEvent { + // _PID: PID of the process that wrote the log entry (trusted). + optional uint32 pid = 1; + + // _TID: thread ID of the logging thread (trusted, set by journald for + // native journal protocol entries). Absent for syslog, stdout-piped, and + // kernel entries. + optional uint32 tid = 2; + + // _UID: user ID of the process (trusted). + optional uint32 uid = 3; + + // _GID: group ID of the process (trusted). + optional uint32 gid = 4; + + // PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG). + optional uint32 prio = 5; + + // SYSLOG_IDENTIFIER: program name / tag, set by the logging application. + optional string tag = 6; + + // MESSAGE: the human-readable log message text. + optional string message = 7; + + // _COMM: short process name as known to the kernel (trusted). + optional string comm = 8; + + // _EXE: full executable path (trusted). + optional string exe = 9; + + // _SYSTEMD_UNIT: the systemd unit that owns this process (trusted). + optional string systemd_unit = 10; + + // _HOSTNAME: hostname of the machine (trusted). + optional string hostname = 11; + + // _TRANSPORT: how the entry was received by journald (trusted). + // Values: "audit", "driver", "syslog", "journal", "stdout", "kernel". + optional string transport = 12; + + // These statistics emitted once on Flush() + optional uint64 num_total = 20; + optional uint64 num_failed = 21; + optional uint64 num_skipped = 22; +} diff --git a/protos/perfetto/trace/trace_packet.proto b/protos/perfetto/trace/trace_packet.proto index 3b463842e5c..d300afa334e 100644 --- a/protos/perfetto/trace/trace_packet.proto +++ b/protos/perfetto/trace/trace_packet.proto @@ -50,6 +50,7 @@ import "protos/perfetto/trace/chrome/chrome_trace_event.proto"; import "protos/perfetto/trace/chrome/chrome_trigger.proto"; import "protos/perfetto/trace/chrome/v8.proto"; import "protos/perfetto/trace/clock_snapshot.proto"; +import "protos/perfetto/trace/linux/journald_event.proto"; import "protos/perfetto/trace/etw/etw_event_bundle.proto"; import "protos/perfetto/trace/evdev.proto"; import "protos/perfetto/trace/filesystem/inode_file_map.proto"; @@ -120,7 +121,7 @@ package perfetto.protos; // See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details. // // Next reserved id: 14 (up to 15). -// Next id: 132. +// Next id: 133. message TracePacket { // Encapsulates the state and configuration of the ProtoVM instances running // when the trace was snapshotted. This allows TP to re-instantiate the VMs @@ -313,6 +314,8 @@ message TracePacket { AndroidUserList user_list = 123; + SystemdJournaldEvent journald_event = 132; + // This field is only used for testing. // In previous versions of this proto this field had the id 268435455 // This caused many problems: diff --git a/src/traced/probes/BUILD.gn b/src/traced/probes/BUILD.gn index ada538e4dff..341e5327063 100644 --- a/src/traced/probes/BUILD.gn +++ b/src/traced/probes/BUILD.gn @@ -76,6 +76,7 @@ source_set("probes_src") { "common", "filesystem", "initial_display_state", + "journald", "metatrace", "packages_list", "power", @@ -119,6 +120,7 @@ perfetto_unittest_source_set("unittests") { "filesystem:unittests", "ftrace:unittests", "initial_display_state:unittests", + "journald:unittests", "packages_list:unittests", "power:unittests", "ps:unittests", diff --git a/src/traced/probes/journald/BUILD.gn b/src/traced/probes/journald/BUILD.gn new file mode 100644 index 00000000000..45616002a6b --- /dev/null +++ b/src/traced/probes/journald/BUILD.gn @@ -0,0 +1,49 @@ +# Copyright (C) 2026 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. + +import("../../../../gn/perfetto.gni") +import("../../../../gn/test.gni") + +source_set("journald") { + public_deps = [ "../../../tracing/core" ] + deps = [ + "..:data_source", + "../../../../gn:default_deps", + "../../../../include/perfetto/ext/traced", + "../../../../protos/perfetto/common:zero", + "../../../../protos/perfetto/config/linux:zero", + "../../../../protos/perfetto/trace:zero", + "../../../../protos/perfetto/trace/linux:zero", + "../../../base", + ] + libs = [ "dl" ] + sources = [ + "journald_data_source.cc", + "journald_data_source.h", + ] +} + +perfetto_unittest_source_set("unittests") { + testonly = true + deps = [ + ":journald", + "../../../../gn:default_deps", + "../../../../gn:gtest_and_gmock", + "../../../../protos/perfetto/config/linux:cpp", + "../../../../protos/perfetto/trace/linux:cpp", + "../../../../src/base:test_support", + "../../../../src/tracing/test:test_support", + ] + sources = [ "journald_data_source_unittest.cc" ] +} diff --git a/src/traced/probes/journald/journald_data_source.cc b/src/traced/probes/journald/journald_data_source.cc new file mode 100644 index 00000000000..3d40bfeac9d --- /dev/null +++ b/src/traced/probes/journald/journald_data_source.cc @@ -0,0 +1,406 @@ +/* + * Copyright (C) 2026 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. + */ + +#include "src/traced/probes/journald/journald_data_source.h" + +#include +#include +#include + +#include + +#include "perfetto/base/logging.h" +#include "perfetto/base/task_runner.h" +#include "perfetto/base/time.h" +#include "perfetto/ext/tracing/core/trace_writer.h" +#include "perfetto/tracing/core/data_source_config.h" + +#include "protos/perfetto/common/builtin_clock.pbzero.h" +#include "protos/perfetto/config/linux/journald_config.pbzero.h" +#include "protos/perfetto/trace/linux/journald_event.pbzero.h" +#include "protos/perfetto/trace/trace_packet.pbzero.h" + +namespace perfetto { +namespace { + +constexpr uint32_t kMaxEventsPerRead = 500; + +// Locally defined to avoid needing at compile time. +struct sd_id128_t { + uint8_t bytes[16]; +}; + +// Function pointer typedefs matching the real libsystemd signatures. +using sd_journal_open_t = int (*)(sd_journal**, int); +using sd_journal_close_t = void (*)(sd_journal*); +using sd_journal_add_match_t = int (*)(sd_journal*, const void*, size_t); +using sd_journal_add_disjunction_t = int (*)(sd_journal*); +using sd_journal_add_conjunction_t = int (*)(sd_journal*); +using sd_journal_seek_tail_t = int (*)(sd_journal*); +using sd_journal_previous_t = int (*)(sd_journal*); +using sd_journal_next_t = int (*)(sd_journal*); +using sd_journal_get_fd_t = int (*)(sd_journal*); +using sd_journal_process_t = int (*)(sd_journal*); +using sd_journal_get_realtime_usec_t = int (*)(sd_journal*, uint64_t*); +using sd_journal_get_monotonic_usec_t = int (*)(sd_journal*, + uint64_t*, + sd_id128_t*); +using sd_journal_get_data_t = int (*)(sd_journal*, + const char*, + const void**, + size_t*); + +// Constants from — defined locally so we don't need +// the systemd headers at compile time. +static constexpr int kSdJournalLocalOnly = 1 << 0; +} // namespace + +struct JournaldDataSource::SdJournalApi { + sd_journal_open_t open; + sd_journal_close_t close; + sd_journal_add_match_t add_match; + sd_journal_add_disjunction_t add_disjunction; + sd_journal_add_conjunction_t add_conjunction; + sd_journal_seek_tail_t seek_tail; + sd_journal_previous_t previous; + sd_journal_next_t next; + sd_journal_get_fd_t get_fd; + sd_journal_process_t process; + sd_journal_get_realtime_usec_t get_realtime_usec; + sd_journal_get_monotonic_usec_t get_monotonic_usec; + sd_journal_get_data_t get_data; +}; + +std::unique_ptr +JournaldDataSource::LoadSdJournalApi() { + const char* libsystemd_soname = "libsystemd.so.0"; + void* handle = dlopen(libsystemd_soname, RTLD_NOW | RTLD_LOCAL); + if (!handle) { + PERFETTO_ELOG( + "linux.systemd_journald datasource unavailable, failed to load %s: %s", + libsystemd_soname, dlerror()); + return nullptr; + } + + auto api = std::make_unique(); + auto load_sym = [&](const char* name) -> void* { + void* sym = dlsym(handle, name); + if (!sym) + PERFETTO_ELOG("dlsym(\"%s\", %s) failed: %s", libsystemd_soname, name, + dlerror()); + return sym; + }; + + api->open = reinterpret_cast(load_sym("sd_journal_open")); + if (!api->open) + return nullptr; + + api->close = + reinterpret_cast(load_sym("sd_journal_close")); + if (!api->close) + return nullptr; + + api->add_match = reinterpret_cast( + load_sym("sd_journal_add_match")); + if (!api->add_match) + return nullptr; + + api->add_disjunction = reinterpret_cast( + load_sym("sd_journal_add_disjunction")); + if (!api->add_disjunction) + return nullptr; + + api->add_conjunction = reinterpret_cast( + load_sym("sd_journal_add_conjunction")); + if (!api->add_conjunction) + return nullptr; + + api->seek_tail = reinterpret_cast( + load_sym("sd_journal_seek_tail")); + if (!api->seek_tail) + return nullptr; + + api->previous = + reinterpret_cast(load_sym("sd_journal_previous")); + if (!api->previous) + return nullptr; + + api->next = reinterpret_cast(load_sym("sd_journal_next")); + if (!api->next) + return nullptr; + + api->get_fd = + reinterpret_cast(load_sym("sd_journal_get_fd")); + if (!api->get_fd) + return nullptr; + + api->process = + reinterpret_cast(load_sym("sd_journal_process")); + if (!api->process) + return nullptr; + + api->get_realtime_usec = reinterpret_cast( + load_sym("sd_journal_get_realtime_usec")); + if (!api->get_realtime_usec) + return nullptr; + + api->get_monotonic_usec = reinterpret_cast( + load_sym("sd_journal_get_monotonic_usec")); + if (!api->get_monotonic_usec) + return nullptr; + + api->get_data = + reinterpret_cast(load_sym("sd_journal_get_data")); + if (!api->get_data) + return nullptr; + + return api; +}; + +const ProbesDataSource::Descriptor JournaldDataSource::descriptor = { + /*name*/ "linux.systemd_journald", + /*flags*/ Descriptor::kFlagsNone, + /*fill_descriptor_func*/ nullptr, +}; + +JournaldDataSource::JournaldDataSource(DataSourceConfig ds_config, + base::TaskRunner* task_runner, + TracingSessionID session_id, + std::unique_ptr writer) + : ProbesDataSource(session_id, &descriptor), + task_runner_(task_runner), + writer_(std::move(writer)), + weak_factory_(this) { + protos::pbzero::SystemdJournaldConfig::Decoder cfg( + ds_config.journald_config_raw()); + if (cfg.has_min_prio()) + min_prio_ = cfg.min_prio(); + for (auto id = cfg.filter_identifiers(); id; ++id) + filter_identifiers_.push_back(id->as_std_string()); + for (auto u = cfg.filter_units(); u; ++u) + filter_units_.push_back(u->as_std_string()); +} + +JournaldDataSource::~JournaldDataSource() { + if (journal_ && sd_) { + task_runner_->RemoveFileDescriptorWatch(sd_->get_fd(journal_)); + sd_->close(journal_); + journal_ = nullptr; + } +} + +// Helper macro to check libsystemd return codes and raise up any errors +#define SD_CHECK(ex) \ + do { \ + int sd_res = (ex); \ + if (sd_res < 0) { \ + PERFETTO_ELOG(#ex " failed: %s", strerror(-sd_res)); \ + return; \ + } \ + } while (false) + +void JournaldDataSource::Start() { + sd_ = LoadSdJournalApi(); + if (!sd_) { + PERFETTO_ELOG("Failed to load libsystemd dynamically; journald disabled."); + return; + } + + int r = sd_->open(&journal_, kSdJournalLocalOnly); + if (r < 0) { + PERFETTO_ELOG("Failed to open journal: %d", -r); + return; + } + + // Add PRIORITY match filters. For each severity level <= min_prio_, + // add a match with OR (disjunction) logic between levels. + for (uint32_t p = 0; p <= min_prio_; ++p) { + std::string match = "PRIORITY=" + std::to_string(p); + SD_CHECK(sd_->add_match(journal_, match.c_str(), match.size())); + if (p < min_prio_) + SD_CHECK(sd_->add_disjunction(journal_)); + } + + // If identifier filters: add them conjuncted with the priority block. + if (!filter_identifiers_.empty()) { + SD_CHECK(sd_->add_conjunction(journal_)); + for (size_t i = 0; i < filter_identifiers_.size(); ++i) { + std::string match = "SYSLOG_IDENTIFIER=" + filter_identifiers_[i]; + SD_CHECK(sd_->add_match(journal_, match.c_str(), match.size())); + if (i + 1 < filter_identifiers_.size()) + SD_CHECK(sd_->add_disjunction(journal_)); + } + } + + // Unit filters similarly conjuncted. + if (!filter_units_.empty()) { + SD_CHECK(sd_->add_conjunction(journal_)); + for (size_t i = 0; i < filter_units_.size(); ++i) { + std::string match = "_SYSTEMD_UNIT=" + filter_units_[i]; + SD_CHECK(sd_->add_match(journal_, match.c_str(), match.size())); + if (i + 1 < filter_units_.size()) + SD_CHECK(sd_->add_disjunction(journal_)); + } + } + + // Seek to tail so only new entries are captured going forward. + SD_CHECK(sd_->seek_tail(journal_)); + SD_CHECK(sd_->previous(journal_)); + + int fd = sd_->get_fd(journal_); + if (fd < 0) { + PERFETTO_ELOG("sd_journal_get_fd failed: %d", -fd); + sd_->close(journal_); + journal_ = nullptr; + return; + } + + // Register the fd watch before draining so no wakeups are missed. + auto weak = weak_factory_.GetWeakPtr(); + task_runner_->AddFileDescriptorWatch(fd, [weak] { + if (weak) + weak->OnJournalReadable(); + }); + + // Drain once after seek_tail(). sd_journal_next() returns 0 immediately + // (no pre-existing entries are delivered), but this call is required to + // establish the per-file n_entries baseline in the sd_journal internals. + // Without it the EOF short-circuit in sd_journal_next() never clears on + // subsequent wakeups, so new entries written after Start() would never + // be seen. + while (sd_->next(journal_) > 0) { + } +} + +void JournaldDataSource::OnJournalReadable() { + sd_->process(journal_); + ReadJournalEntries(); +} + +void JournaldDataSource::ReadJournalEntries() { + uint32_t n = 0; + + while (sd_->next(journal_) > 0 && n < kMaxEventsPerRead) { + std::string prio_str = GetField("PRIORITY"); + uint32_t prio = prio_str.empty() ? min_prio_ + : static_cast(std::strtoul( + prio_str.c_str(), nullptr, 10)); + if (prio > min_prio_) { + stats_.num_skipped++; + continue; + } + + uint64_t monotonic_us = 0; + sd_id128_t boot_id{}; + if (sd_->get_monotonic_usec(journal_, &monotonic_us, &boot_id) < 0) { + PERFETTO_LOG("failed to get monotonic timestamp for journald event"); + stats_.num_failed++; + continue; + } + + auto packet = writer_->NewTracePacket(); + packet->set_timestamp(monotonic_us * 1000); + packet->set_timestamp_clock_id(protos::pbzero::BUILTIN_CLOCK_MONOTONIC); + auto* ev = packet->set_journald_event(); + ev->set_prio(prio); + + std::string msg = GetField("MESSAGE"); + if (!msg.empty()) + ev->set_message(msg); + + std::string tag = GetField("SYSLOG_IDENTIFIER"); + if (!tag.empty()) + ev->set_tag(tag); + + std::string comm = GetField("_COMM"); + if (!comm.empty()) + ev->set_comm(comm); + + std::string exe = GetField("_EXE"); + if (!exe.empty()) + ev->set_exe(exe); + + std::string unit = GetField("_SYSTEMD_UNIT"); + if (!unit.empty()) + ev->set_systemd_unit(unit); + + std::string host = GetField("_HOSTNAME"); + if (!host.empty()) + ev->set_hostname(host); + + std::string transport = GetField("_TRANSPORT"); + if (!transport.empty()) + ev->set_transport(transport); + + std::string pid_str = GetField("_PID"); + if (!pid_str.empty()) + ev->set_pid( + static_cast(std::strtoul(pid_str.c_str(), nullptr, 10))); + + std::string tid_str = GetField("_TID"); + if (!tid_str.empty()) + ev->set_tid( + static_cast(std::strtoul(tid_str.c_str(), nullptr, 10))); + + std::string uid_str = GetField("_UID"); + if (!uid_str.empty()) + ev->set_uid( + static_cast(std::strtoul(uid_str.c_str(), nullptr, 10))); + + std::string gid_str = GetField("_GID"); + if (!gid_str.empty()) + ev->set_gid( + static_cast(std::strtoul(gid_str.c_str(), nullptr, 10))); + + stats_.num_total++; + n++; + } +} + +std::string JournaldDataSource::GetField(const char* field) { + const void* data = nullptr; + size_t len = 0; + if (sd_->get_data(journal_, field, &data, &len) < 0) + return {}; + // sd_journal_get_data returns "FIELD=value"; skip past the '='. + const char* str = static_cast(data); + const char* eq = static_cast(memchr(str, '=', len)); + if (!eq) + return {}; + ++eq; // skip '=' + return std::string(eq, static_cast(str + len - eq)); +} + +void JournaldDataSource::Flush(FlushRequestID, std::function callback) { + if (journal_ && sd_) { + sd_->process(journal_); + ReadJournalEntries(); + } + + // Emit a stats packet. + { + auto packet = writer_->NewTracePacket(); + packet->set_timestamp(static_cast(base::GetBootTimeNs().count())); + auto* stats = packet->set_journald_event(); + stats->set_num_total(stats_.num_total); + stats->set_num_skipped(stats_.num_skipped); + stats->set_num_failed(stats_.num_failed); + } + + writer_->Flush(callback); +} + +} // namespace perfetto diff --git a/src/traced/probes/journald/journald_data_source.h b/src/traced/probes/journald/journald_data_source.h new file mode 100644 index 00000000000..22f93628db1 --- /dev/null +++ b/src/traced/probes/journald/journald_data_source.h @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2026 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. + */ + +#ifndef SRC_TRACED_PROBES_JOURNALD_JOURNALD_DATA_SOURCE_H_ +#define SRC_TRACED_PROBES_JOURNALD_JOURNALD_DATA_SOURCE_H_ + +#include +#include +#include +#include +#include + +#include "perfetto/ext/base/weak_ptr.h" +#include "perfetto/tracing/core/forward_decls.h" +#include "src/traced/probes/probes_data_source.h" + +// Forward-declare the C struct to avoid pulling in +// into every TU that includes this header. +struct sd_journal; + +namespace perfetto { + +class TraceWriter; +namespace base { +class TaskRunner; +} + +class JournaldDataSource : public ProbesDataSource { + public: + static const ProbesDataSource::Descriptor descriptor; + + struct Stats { + uint64_t num_total = 0; + uint64_t num_failed = 0; + uint64_t num_skipped = 0; + }; + + JournaldDataSource(DataSourceConfig ds_config, + base::TaskRunner* task_runner, + TracingSessionID session_id, + std::unique_ptr writer); + + ~JournaldDataSource() override; + + // ProbesDataSource implementation. + void Start() override; + void Flush(FlushRequestID, std::function callback) override; + + const Stats& stats() const { return stats_; } + + private: + void OnJournalReadable(); + void ReadJournalEntries(); + std::string GetField(const char* field); + + base::TaskRunner* const task_runner_; + std::unique_ptr writer_; + sd_journal* journal_ = nullptr; + + struct SdJournalApi; + std::unique_ptr sd_; + std::unique_ptr LoadSdJournalApi(); + + // Config parameters. + uint32_t min_prio_ = 7; // 7=DEBUG, capture everything by default. + std::vector filter_identifiers_; + std::vector filter_units_; + + Stats stats_; + base::WeakPtrFactory weak_factory_; // Keep last. +}; + +} // namespace perfetto + +#endif // SRC_TRACED_PROBES_JOURNALD_JOURNALD_DATA_SOURCE_H_ diff --git a/src/traced/probes/journald/journald_data_source_unittest.cc b/src/traced/probes/journald/journald_data_source_unittest.cc new file mode 100644 index 00000000000..481281dca67 --- /dev/null +++ b/src/traced/probes/journald/journald_data_source_unittest.cc @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2026 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. + */ + +#include "src/traced/probes/journald/journald_data_source.h" + +#include "perfetto/tracing/core/data_source_config.h" +#include "src/base/test/test_task_runner.h" +#include "src/tracing/core/trace_writer_for_testing.h" +#include "test/gtest_and_gmock.h" + +#include "protos/perfetto/config/linux/journald_config.gen.h" + +using ::perfetto::protos::gen::SystemdJournaldConfig; + +namespace perfetto { +namespace { + +class JournaldDataSourceTest : public ::testing::Test { + protected: + void CreateInstance(const DataSourceConfig& cfg) { + auto writer = std::make_unique(); + writer_raw_ = writer.get(); + data_source_ = std::make_unique( + cfg, &task_runner_, /*session_id=*/0, std::move(writer)); + } + + base::TestTaskRunner task_runner_; + std::unique_ptr data_source_; + TraceWriterForTesting* writer_raw_ = nullptr; +}; + +// Creating a data source without any config should not crash. +TEST_F(JournaldDataSourceTest, DefaultConfig) { + DataSourceConfig cfg; + CreateInstance(cfg); + EXPECT_EQ(data_source_->stats().num_total, 0u); + EXPECT_EQ(data_source_->stats().num_failed, 0u); + EXPECT_EQ(data_source_->stats().num_skipped, 0u); +} + +// Calling Flush() before Start() (journal_ == nullptr) must not crash and must +// invoke the callback. +TEST_F(JournaldDataSourceTest, FlushWithoutStart) { + DataSourceConfig cfg; + CreateInstance(cfg); + bool callback_called = false; + data_source_->Flush(0, [&callback_called] { callback_called = true; }); + EXPECT_TRUE(callback_called); +} + +// Verify that min_prio and filter fields from the config are accepted without +// error during construction. +TEST_F(JournaldDataSourceTest, ConfigParsing) { + SystemdJournaldConfig cfg_proto; + cfg_proto.set_min_prio(3); + cfg_proto.add_filter_identifiers("sshd"); + cfg_proto.add_filter_identifiers("kernel"); + cfg_proto.add_filter_units("nginx.service"); + + DataSourceConfig cfg; + cfg.set_journald_config_raw(cfg_proto.SerializeAsString()); + CreateInstance(cfg); + // Construction must succeed and stats start at zero. + EXPECT_EQ(data_source_->stats().num_total, 0u); +} + +// Verify the static descriptor has the correct name. +TEST_F(JournaldDataSourceTest, Descriptor) { + EXPECT_STREQ(JournaldDataSource::descriptor.name, "linux.systemd_journald"); +} + +} // namespace +} // namespace perfetto diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc index a98fb823710..0925e2e73b0 100644 --- a/src/traced/probes/probes_producer.cc +++ b/src/traced/probes/probes_producer.cc @@ -59,6 +59,8 @@ #include "src/traced/probes/system_info/system_info_data_source.h" #include "src/traced/probes/user_list/user_list_data_source.h" +#include "src/traced/probes/journald/journald_data_source.h" + namespace perfetto { namespace { @@ -361,6 +363,17 @@ ProbesProducer::CreateDSInstance( endpoint_->CreateTraceWriter(buffer_id, BufferExhaustedPolicy::kStall)); } +template <> +std::unique_ptr +ProbesProducer::CreateDSInstance( + TracingSessionID session_id, + const DataSourceConfig& config) { + auto buffer_id = static_cast(config.target_buffer()); + return std::make_unique( + config, task_runner_, session_id, + endpoint_->CreateTraceWriter(buffer_id, BufferExhaustedPolicy::kStall)); +} + // Another anonymous namespace. This cannot be moved into the anonymous // namespace on top (it would fail to compile), because the CreateDSInstance // methods need to be fully declared before. @@ -391,6 +404,7 @@ constexpr const DataSourceTraits kAllDataSources[] = { Ds(), Ds(), Ds(), + Ds(), Ds(), Ds(), Ds(),