| # Copyright (C) 2024 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. |
| |
| from python.generators.trace_processor_table.public import Column as C |
| from python.generators.trace_processor_table.public import CppAccess |
| from python.generators.trace_processor_table.public import CppInt64 |
| from python.generators.trace_processor_table.public import CppUint32 |
| from python.generators.trace_processor_table.public import Table |
| |
| # Output of `__intrinsic_critical_path_walk`. One row per emitted |
| # blocker frame: thread `blocker_utid` (wakeup-graph entry `blocker_id`) |
| # was on-CPU on `root_id`'s behalf during [ts, ts + dur), at `depth` |
| # cross-thread hops along the wakeup chain. `parent_id` is the |
| # `blocker_id` of the layer one level above this row (`root_id` at |
| # depth 0); callers feed the rows to `_intervals_flatten` to collapse |
| # overlapping layers to the deepest active blocker per timestamp. |
| CRITICAL_PATH_WALK_TABLE = Table( |
| python_module=__file__, |
| class_name="CriticalPathWalkTable", |
| sql_name="__intrinsic_critical_path_walk_out", |
| columns=[ |
| C("root_id", CppUint32(), |
| cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("depth", CppUint32(), cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("ts", CppInt64(), cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("dur", CppInt64(), cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("blocker_id", |
| CppUint32(), |
| cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("blocker_utid", |
| CppUint32(), |
| cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| C("parent_id", |
| CppUint32(), |
| cpp_access=CppAccess.READ_AND_HIGH_PERF_WRITE), |
| ]) |
| |
| # Keep this list sorted. |
| ALL_TABLES = [ |
| CRITICAL_PATH_WALK_TABLE, |
| ] |