-- -- Copyright 2019 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. -- CREATE VIEW freq_view AS SELECT ts, lead(ts) OVER (PARTITION BY track_id ORDER BY ts) - ts AS dur, cpu, name AS freq_name, value AS freq_value FROM counter JOIN cpu_counter_track ON counter.track_id = cpu_counter_track.id WHERE name = 'cpufreq'; CREATE VIEW idle_view AS SELECT ts, lead(ts) OVER (PARTITION BY track_id ORDER BY ts) - ts AS dur, cpu, name AS idle_name, value AS idle_value FROM counter JOIN cpu_counter_track ON counter.track_id = cpu_counter_track.id WHERE name = 'cpuidle'; CREATE VIRTUAL TABLE freq_idle USING span_join(freq_view PARTITIONED cpu, idle_view PARTITIONED cpu); CREATE VIRTUAL TABLE window_freq_idle USING window; CREATE VIRTUAL TABLE span_freq_idle USING span_join(freq_idle PARTITIONED cpu, window_freq_idle); UPDATE window_freq_idle SET window_start = (SELECT min(ts) FROM sched), window_dur = (SELECT max(ts) - min(ts) FROM sched), quantum = 1000000 WHERE rowid = 0; CREATE VIEW counter_view AS SELECT ts, dur, quantum_ts, cpu, CASE idle_value WHEN 4294967295 THEN "freq" ELSE "idle" END AS name, CASE idle_value WHEN 4294967295 THEN freq_value ELSE idle_value END AS value FROM span_freq_idle; SELECT cpu, name, value, sum(dur) FROM counter_view GROUP BY cpu, name, value;