1#!/usr/bin/env python3 2# Copyright (C) 2020 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# http://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 16from os import sys 17 18import synth_common 19from synth_common import ms_to_ns 20 21trace = synth_common.create_trace() 22 23process_track1 = 1234 24process_track2 = 4567 25 26process_pid1 = 2345 27process_pid2 = 5678 28 29thread_track1 = 1235 30thread_track2 = 4568 31 32rail_track1 = 1236 33rail_track2 = 4569 34 35# Main threads have the same ID as the process 36thread_tid1 = process_pid1 37thread_tid2 = process_pid2 38 39seq1 = 9876 40seq2 = 9877 41 42thread1_counter = 60 43thread2_counter = 61 44 45packet = trace.add_packet() 46packet = trace.add_power_rails_desc(0, "PPVAR_VPH_PWR_RF") 47packet = trace.add_power_rails_desc(1, "PPVAR_VPH_PWR_S1C") 48 49trace.add_chrome_process_track_descriptor(process_track1, process_pid1) 50trace.add_chrome_process_track_descriptor(process_track2, process_pid2) 51 52trace.add_chrome_thread_with_cpu_counter( 53 process_track1, 54 thread_track1, 55 trusted_packet_sequence_id=seq1, 56 counter_track=thread1_counter, 57 pid=process_pid1, 58 tid=thread_tid1, 59 thread_type=trace.prototypes.ThreadDescriptor.ChromeThreadType 60 .CHROME_THREAD_MAIN) 61 62trace.add_chrome_thread_with_cpu_counter( 63 process_track2, 64 thread_track2, 65 trusted_packet_sequence_id=seq2, 66 counter_track=thread2_counter, 67 pid=process_pid2, 68 tid=thread_tid2, 69 thread_type=trace.prototypes.ThreadDescriptor.ChromeThreadType 70 .CHROME_THREAD_MAIN) 71 72trace.add_track_descriptor(rail_track1, parent=process_track1) 73trace.add_track_descriptor(rail_track2, parent=process_track2) 74 75trace.add_rail_mode_slice( 76 ts=0, 77 dur=ms_to_ns(10), 78 track=rail_track1, 79 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_RESPONSE) 80trace.add_rail_mode_slice( 81 ts=ms_to_ns(10), 82 dur=ms_to_ns(20), 83 track=rail_track1, 84 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_LOAD) 85trace.add_rail_mode_slice( 86 ts=ms_to_ns(30), 87 dur=-1, 88 track=rail_track1, 89 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_IDLE) 90 91trace.add_track_event_slice( 92 "task", 93 0, 94 ms_to_ns(10), 95 trusted_sequence_id=seq2, 96 cpu_start=0, 97 cpu_delta=ms_to_ns(10)) 98 99trace.add_rail_mode_slice( 100 ts=0, 101 dur=ms_to_ns(10), 102 track=rail_track2, 103 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_ANIMATION) 104trace.add_rail_mode_slice( 105 ts=ms_to_ns(10), 106 dur=ms_to_ns(25), 107 track=rail_track2, 108 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_IDLE) 109trace.add_rail_mode_slice( 110 ts=ms_to_ns(35), 111 dur=ms_to_ns(10), 112 track=rail_track2, 113 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_ANIMATION) 114trace.add_rail_mode_slice( 115 ts=ms_to_ns(45), 116 dur=ms_to_ns(10), 117 track=rail_track2, 118 mode=trace.prototypes.ChromeRAILMode.RAIL_MODE_IDLE) 119 120packet = trace.add_packet() 121 122# cellular 123packet = trace.add_power_rails_data(0, 0, 0) 124packet = trace.add_power_rails_data(10, 0, 0) 125packet = trace.add_power_rails_data(20, 0, 30) 126packet = trace.add_power_rails_data(30, 0, 50) 127packet = trace.add_power_rails_data(40, 0, 55) 128packet = trace.add_power_rails_data(50, 0, 56) 129packet = trace.add_power_rails_data(55, 0, 56) 130 131# cpu little cores 132packet = trace.add_power_rails_data(0, 1, 0) 133packet = trace.add_power_rails_data(10, 1, 20) 134packet = trace.add_power_rails_data(20, 1, 30) 135packet = trace.add_power_rails_data(30, 1, 40) 136packet = trace.add_power_rails_data(40, 1, 42) 137packet = trace.add_power_rails_data(50, 1, 60) 138packet = trace.add_power_rails_data(55, 1, 61) 139 140sys.stdout.buffer.write(trace.trace.SerializeToString()) 141