blob: 5b49aceac2f8ebe482f2d9f0e4cdd3478458c54c [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.
--
-- Functions useful for filling the SystemState proto which gives
-- context to what was happening on the system during a startup.
SELECT IMPORT('android.startup.startups');
-- Given a launch id and process name glob, returns the sched.dur if a process with
-- that name was running on a CPU concurrent to that launch.
SELECT CREATE_FUNCTION(
'DUR_OF_PROCESS_RUNNING_CONCURRENT_TO_LAUNCH(startup_id INT, process_glob STRING)',
'INT',
'
SELECT IFNULL(SUM(sched.dur), 0)
FROM sched
JOIN thread USING (utid)
JOIN process USING (upid)
JOIN (
SELECT ts, ts_end
FROM android_startups
WHERE startup_id = $startup_id
) launch
WHERE
process.name GLOB $process_glob AND
sched.ts BETWEEN launch.ts AND launch.ts_end
'
);
-- Given a launch id and slice name glob, returns the number of slices with that
-- name which start concurrent to that launch.
SELECT CREATE_FUNCTION(
'COUNT_SLICES_CONCURRENT_TO_LAUNCH(startup_id INT, slice_glob STRING)',
'INT',
'
SELECT COUNT(1)
FROM slice
JOIN (
SELECT ts, ts_end
FROM android_startups
WHERE startup_id = $startup_id
) launch
WHERE
slice.name GLOB $slice_glob AND
slice.ts BETWEEN launch.ts AND launch.ts_end
'
);