blob: c3ce4bce87c3d528446a99ca0d11a04cd2d08ce2 [file] [log] [blame]
--
-- Copyright 2022 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
--
-- https://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.
--
-- Provides a list of broadcast names and processes they were sent to by the
-- system_server process on U+ devices.
--
-- @column type The name of the broadcast type which was sent.
-- @column process_name The process name the broadcast was sent to.
-- @column queue_name The name of the broacast queue the broadcast was
-- dispatched from.
CREATE VIEW experimental_android_broadcasts_minsdk_u AS
WITH
broadcast_queues AS (
SELECT process_track.id, process_track.name AS queue_name
FROM process_track
JOIN process USING (upid)
WHERE
process_track.name GLOB 'BroadcastQueue.mRunning*'
AND process.name = 'system_server'
),
broadcast_process_running AS (
SELECT ts, dur, str_split(slice.name, '/', 0) AS process_name, queue_name
FROM slice
JOIN broadcast_queues ON broadcast_queues.id = slice.track_id
WHERE slice.name GLOB '* running'
)
SELECT str_split(slice.name, '/', 0) AS type, process_name, queue_name
FROM broadcast_process_running
JOIN broadcast_queues USING (queue_name)
JOIN slice ON (
broadcast_process_running.ts < slice.ts
AND slice.ts < broadcast_process_running.ts + broadcast_process_running.dur
AND slice.track_id = broadcast_queues.id
)
WHERE slice.name GLOB '* scheduled';