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