1#!/usr/bin/env python3 2# Copyright (C) 2022 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, path 17 18import synth_common 19 20PROCESS_A_NAME = 'test_process_a' 21PROCESS_B_NAME = 'test_process_b' 22PROCESS_C_NAME = 'test_process_c' 23PROCESS_A_PID = 1 24PROCESS_B_PID = 2 25PROCESS_C_PID = 3 26PROCESS_A_PPID = 4 27PROCESS_B_PPID = 5 28PROCESS_C_PPID = 6 29PROCESS_A_TID = 7 30# These values need to be the same to keep track of process ids in kernel space 31PROCESS_B_TID = PROCESS_B_PID 32PROCESS_C_TID = PROCESS_C_PID 33 34trace = synth_common.create_trace() 35trace.add_packet() 36trace.add_process(PROCESS_A_PID, PROCESS_A_PPID, PROCESS_A_NAME) 37trace.add_process(PROCESS_B_PID, PROCESS_B_PPID, PROCESS_B_NAME) 38trace.add_process(PROCESS_C_PID, PROCESS_C_PPID, PROCESS_C_NAME) 39trace.add_thread(PROCESS_A_TID, PROCESS_A_PID, cmdline='Binder') 40trace.add_ftrace_packet(cpu=0) 41 42trace.add_binder_transaction( 43 transaction_id=1, 44 ts_start=1, 45 ts_end=2, 46 tid=PROCESS_A_TID, 47 pid=PROCESS_A_PID, 48 reply_id=2, 49 reply_ts_start=3, 50 reply_ts_end=4, 51 reply_tid=PROCESS_B_TID, 52 reply_pid=PROCESS_B_PID) 53trace.add_binder_transaction( 54 transaction_id=3, 55 ts_start=5, 56 ts_end=6, 57 tid=PROCESS_A_TID, 58 pid=PROCESS_A_PID, 59 reply_id=4, 60 reply_ts_start=7, 61 reply_ts_end=8, 62 reply_tid=PROCESS_C_TID, 63 reply_pid=PROCESS_C_PID) 64 65sys.stdout.buffer.write(trace.trace.SerializeToString()) 66