• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2024 The Android Open Source Project
3--
4-- Licensed under the Apache License, Version 2.0 (the "License");
5-- you may not use this file except in compliance with the License.
6-- You may obtain a copy of the License at
7--
8--     https://www.apache.org/licenses/LICENSE-2.0
9--
10-- Unless required by applicable law or agreed to in writing, software
11-- distributed under the License is distributed on an "AS IS" BASIS,
12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-- See the License for the specific language governing permissions and
14-- limitations under the License.
15
16-- All thread slices with data about thread, thread track and process.
17-- Where possible, use available view functions which filter this view.
18CREATE PERFETTO VIEW thread_slice(
19  -- Alias for `slice.id`.
20  id INT,
21  -- Alias for `slice.type`.
22  type STRING,
23  -- Alias for `slice.ts`.
24  ts INT,
25  -- Alias for `slice.dur`.
26  dur INT,
27  -- Alias for `slice.category`.
28  category STRING,
29  -- Alias for `slice.name`.
30  name STRING,
31  -- Alias for `slice.track_id`.
32  track_id INT,
33  -- Alias for `thread_track.name`.
34  track_name STRING,
35  -- Alias for `thread.name`.
36  thread_name STRING,
37  -- Alias for `thread.utid`.
38  utid INT,
39  -- Alias for `thread.tid`.
40  tid INT,
41  -- Alias for `thread.is_main_thread`.
42  is_main_thread BOOL,
43  -- Alias for `process.name`.
44  process_name STRING,
45  -- Alias for `process.upid`.
46  upid INT,
47  -- Alias for `process.pid`.
48  pid INT,
49  -- Alias for `slice.depth`.
50  depth INT,
51  -- Alias for `slice.parent_id`.
52  parent_id INT,
53  -- Alias for `slice.arg_set_id`.
54  arg_set_id INT,
55  -- Alias for `slice.thread_ts`.
56  thread_ts INT,
57  -- Alias for `slice.thread_dur`.
58  thread_dur INT
59) AS
60SELECT
61  slice.id,
62  slice.type,
63  slice.ts,
64  slice.dur,
65  slice.category,
66  slice.name,
67  slice.track_id,
68  thread_track.name AS track_name,
69  thread.name AS thread_name,
70  thread.utid,
71  thread.tid,
72  thread.is_main_thread,
73  process.name AS process_name,
74  process.upid,
75  process.pid,
76  slice.depth,
77  slice.parent_id,
78  slice.arg_set_id,
79  slice.thread_ts,
80  slice.thread_dur
81FROM slice
82JOIN thread_track ON slice.track_id = thread_track.id
83JOIN thread USING (utid)
84LEFT JOIN process USING (upid);
85
86-- All process slices with data about process track and process.
87-- Where possible, use available view functions which filter this view.
88CREATE PERFETTO VIEW process_slice(
89  -- Alias for `slice.id`.
90  id INT,
91  -- Alias for `slice.type`.
92  type STRING,
93  -- Alias for `slice.ts`.
94  ts INT,
95  -- Alias for `slice.dur`.
96  dur INT,
97  -- Alias for `slice.category`.
98  category STRING,
99  -- Alias for `slice.name`.
100  name STRING,
101  -- Alias for `slice.track_id`.
102  track_id INT,
103  -- Alias for `process_track.name`.
104  track_name STRING,
105  -- Alias for `process.name`.
106  process_name STRING,
107  -- Alias for `process.upid`.
108  upid INT,
109  -- Alias for `process.pid`.
110  pid INT,
111  -- Alias for `slice.depth`.
112  depth INT,
113  -- Alias for `slice.parent_id`.
114  parent_id INT,
115  -- Alias for `slice.arg_set_id`.
116  arg_set_id INT,
117  -- Alias for `slice.thread_ts`.
118  thread_ts INT,
119  -- Alias for `slice.thread_dur`.
120  thread_dur INT
121) AS
122SELECT
123  slice.id,
124  slice.type,
125  slice.ts,
126  slice.dur,
127  slice.category,
128  slice.name,
129  slice.track_id,
130  process_track.name AS track_name,
131  process.name AS process_name,
132  process.upid,
133  process.pid,
134  slice.depth,
135  slice.parent_id,
136  slice.arg_set_id,
137  slice.thread_ts,
138  slice.thread_dur
139FROM slice
140JOIN process_track ON slice.track_id = process_track.id
141JOIN process USING (upid);