1# Copyright (C) 2023 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14"""Contains tables for finding ancestor events.""" 15 16from python.generators.trace_processor_table.public import Column as C 17from python.generators.trace_processor_table.public import ColumnFlag 18from python.generators.trace_processor_table.public import CppDouble 19from python.generators.trace_processor_table.public import CppInt64 20from python.generators.trace_processor_table.public import CppOptional 21from python.generators.trace_processor_table.public import CppString 22from python.generators.trace_processor_table.public import CppTableId 23from python.generators.trace_processor_table.public import CppUint32 24from python.generators.trace_processor_table.public import Table 25 26from src.trace_processor.tables.counter_tables import COUNTER_TABLE 27from src.trace_processor.tables.flow_tables import FLOW_TABLE 28from src.trace_processor.tables.metadata_tables import PROCESS_TABLE 29from src.trace_processor.tables.profiler_tables import STACK_PROFILE_CALLSITE_TABLE 30from src.trace_processor.tables.slice_tables import SLICE_TABLE 31from src.trace_processor.tables.sched_tables import SCHED_SLICE_TABLE 32 33TABLE_INFO_TABLE = Table( 34 python_module=__file__, 35 class_name="PerfettoTableInfoTable", 36 sql_name="perfetto_table_info", 37 columns=[ 38 C("table_name", CppString(), flags=ColumnFlag.HIDDEN), 39 C('name', CppString()), 40 C('col_type', CppString()), 41 C('nullable', CppInt64()), 42 C('sorted', CppInt64()), 43 ]) 44 45ANCESTOR_SLICE_TABLE = Table( 46 python_module=__file__, 47 class_name="AncestorSliceTable", 48 sql_name="ancestor_slice", 49 columns=[ 50 C("start_id", CppTableId(SLICE_TABLE), flags=ColumnFlag.HIDDEN), 51 ], 52 parent=SLICE_TABLE) 53 54ANCESTOR_SLICE_BY_STACK_TABLE = Table( 55 python_module=__file__, 56 class_name="AncestorSliceByStackTable", 57 sql_name="ancestor_slice_by_stack", 58 columns=[ 59 C("start_stack_id", CppInt64(), flags=ColumnFlag.HIDDEN), 60 ], 61 parent=SLICE_TABLE) 62 63ANCESTOR_STACK_PROFILE_CALLSITE_TABLE = Table( 64 python_module=__file__, 65 class_name="AncestorStackProfileCallsiteTable", 66 sql_name="experimental_ancestor_stack_profile_callsite", 67 columns=[ 68 C("start_id", 69 CppTableId(STACK_PROFILE_CALLSITE_TABLE), 70 flags=ColumnFlag.HIDDEN), 71 ], 72 parent=STACK_PROFILE_CALLSITE_TABLE) 73 74CONNECTED_FLOW_TABLE = Table( 75 python_module=__file__, 76 class_name="ConnectedFlowTable", 77 sql_name="not_exposed_to_sql", 78 columns=[ 79 C("start_id", CppTableId(SLICE_TABLE), flags=ColumnFlag.HIDDEN), 80 ], 81 parent=FLOW_TABLE) 82 83ARGS_WITH_DEFAULTS_TABLE = Table( 84 python_module=__file__, 85 class_name='WinscopeArgsWithDefaultsTable', 86 sql_name='__intrinsic_winscope_proto_to_args_with_defaults', 87 columns=[ 88 C("table_name", CppString(), flags=ColumnFlag.HIDDEN), 89 C('base64_proto_id', CppUint32()), 90 C('flat_key', CppString()), 91 C('key', CppString()), 92 C('int_value', CppOptional(CppInt64())), 93 C('string_value', CppOptional(CppString())), 94 C('real_value', CppOptional(CppDouble())), 95 C('value_type', CppString()), 96 ]) 97 98DESCENDANT_SLICE_TABLE = Table( 99 python_module=__file__, 100 class_name="DescendantSliceTable", 101 sql_name="descendant_slice", 102 columns=[ 103 C("start_id", CppTableId(SLICE_TABLE), flags=ColumnFlag.HIDDEN), 104 ], 105 parent=SLICE_TABLE) 106 107DESCENDANT_SLICE_BY_STACK_TABLE = Table( 108 python_module=__file__, 109 class_name="DescendantSliceByStackTable", 110 sql_name="descendant_slice_by_stack", 111 columns=[ 112 C("start_stack_id", CppInt64(), flags=ColumnFlag.HIDDEN), 113 ], 114 parent=SLICE_TABLE) 115 116EXPERIMENTAL_ANNOTATED_CALLSTACK_TABLE = Table( 117 python_module=__file__, 118 class_name="ExperimentalAnnotatedCallstackTable", 119 sql_name="experimental_annotated_callstack", 120 columns=[ 121 C("annotation", CppString()), 122 C("start_id", 123 CppTableId(STACK_PROFILE_CALLSITE_TABLE), 124 flags=ColumnFlag.HIDDEN), 125 ], 126 parent=STACK_PROFILE_CALLSITE_TABLE) 127 128EXPERIMENTAL_COUNTER_DUR_TABLE = Table( 129 python_module=__file__, 130 class_name="ExperimentalCounterDurTable", 131 sql_name="experimental_counter_dur", 132 columns=[ 133 C("dur", CppInt64()), 134 C("delta", CppDouble()), 135 ], 136 parent=COUNTER_TABLE) 137 138EXPERIMENTAL_SCHED_UPID_TABLE = Table( 139 python_module=__file__, 140 class_name="ExperimentalSchedUpidTable", 141 sql_name="__intrinsic_sched_upid", 142 columns=[ 143 C("upid", CppOptional(CppTableId(PROCESS_TABLE))), 144 ], 145 parent=SCHED_SLICE_TABLE) 146 147EXPERIMENTAL_SLICE_LAYOUT_TABLE = Table( 148 python_module=__file__, 149 class_name="ExperimentalSliceLayoutTable", 150 sql_name="experimental_slice_layout", 151 columns=[ 152 C("layout_depth", CppUint32()), 153 C("filter_track_ids", CppString(), flags=ColumnFlag.HIDDEN), 154 ], 155 parent=SLICE_TABLE) 156 157DFS_WEIGHT_BOUNDED_TABLE = Table( 158 python_module=__file__, 159 class_name="DfsWeightBoundedTable", 160 sql_name="__intrinsic_dfs_weight_bounded", 161 columns=[ 162 C("root_node_id", CppUint32()), 163 C("node_id", CppUint32()), 164 C("parent_node_id", CppOptional(CppUint32())), 165 C("in_source_node_ids", 166 CppOptional(CppUint32()), 167 flags=ColumnFlag.HIDDEN), 168 C("in_dest_node_ids", CppOptional(CppUint32()), 169 flags=ColumnFlag.HIDDEN), 170 C("in_edge_weights", CppOptional(CppUint32()), flags=ColumnFlag.HIDDEN), 171 C("in_root_node_ids", CppOptional(CppUint32()), 172 flags=ColumnFlag.HIDDEN), 173 C("in_root_max_weights", 174 CppOptional(CppUint32()), 175 flags=ColumnFlag.HIDDEN), 176 C("in_is_target_weight_floor", 177 CppOptional(CppUint32()), 178 flags=ColumnFlag.HIDDEN), 179 ]) 180 181# Keep this list sorted. 182ALL_TABLES = [ 183 ANCESTOR_SLICE_BY_STACK_TABLE, 184 ANCESTOR_SLICE_TABLE, 185 ANCESTOR_STACK_PROFILE_CALLSITE_TABLE, 186 CONNECTED_FLOW_TABLE, 187 ARGS_WITH_DEFAULTS_TABLE, 188 DESCENDANT_SLICE_BY_STACK_TABLE, 189 DESCENDANT_SLICE_TABLE, 190 DFS_WEIGHT_BOUNDED_TABLE, 191 EXPERIMENTAL_ANNOTATED_CALLSTACK_TABLE, 192 EXPERIMENTAL_COUNTER_DUR_TABLE, 193 EXPERIMENTAL_SCHED_UPID_TABLE, 194 EXPERIMENTAL_SLICE_LAYOUT_TABLE, 195 TABLE_INFO_TABLE, 196] 197