• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2022 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 slices with related process and thread info if available. Unlike
17-- `thread_slice` and `process_slice`, this view contains all slices,
18-- with thread- and process-related columns set to NULL if the slice
19-- is not associated with a thread or a process.
20CREATE PERFETTO VIEW _slice_with_thread_and_process_info(
21  -- Alias for `slice.id`.
22  id INT,
23  -- Alias for `slice.type`.
24  type STRING,
25  -- Alias for `slice.ts`.
26  ts INT,
27  -- Alias for `slice.dur`.
28  dur INT,
29  -- Alias for `slice.category`.
30  category STRING,
31  -- Alias for `slice.name`.
32  name STRING,
33  -- Alias for `slice.track_id`.
34  track_id INT,
35  -- Alias for `track.name`.
36  track_name STRING,
37  -- Alias for `thread.name`.
38  thread_name STRING,
39  -- Alias for `thread.utid`.
40  utid INT,
41  -- Alias for `thread.tid`
42  tid INT,
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  track.name AS track_name,
69  thread.name AS thread_name,
70  thread.utid,
71  thread.tid,
72  COALESCE(process1.name, process2.name) AS process_name,
73  COALESCE(process1.upid, process2.upid) AS upid,
74  COALESCE(process1.pid, process2.pid) AS pid,
75  slice.depth,
76  slice.parent_id,
77  slice.arg_set_id,
78  slice.thread_ts,
79  slice.thread_dur
80FROM slice
81JOIN track ON slice.track_id = track.id
82LEFT JOIN thread_track ON slice.track_id = thread_track.id
83LEFT JOIN thread USING (utid)
84LEFT JOIN process process1 ON thread.upid = process1.upid
85LEFT JOIN process_track ON slice.track_id = process_track.id
86LEFT JOIN process process2 ON process_track.upid = process2.upid;
87