-- -- 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 inner 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 inner 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;