1975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg/* 2975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * Copyright (C) 2012 Google, Inc. 3975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * 4975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * This software is licensed under the terms of the GNU General Public 5975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * License version 2, as published by the Free Software Foundation, and 6975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * may be copied, distributed, and modified under those terms. 7975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * 8975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * This program is distributed in the hope that it will be useful, 9975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * but WITHOUT ANY WARRANTY; without even the implied warranty of 10975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * GNU General Public License for more details. 12975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg * 13975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg */ 14975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 15975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#undef TRACE_SYSTEM 16975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define TRACE_SYSTEM binder 17975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 18975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#if !defined(_BINDER_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 19975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define _BINDER_TRACE_H 20975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 21975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#include <linux/tracepoint.h> 22975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 23975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_buffer; 24975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_node; 25975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_proc; 26975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_ref; 27975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_thread; 28975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevågstruct binder_transaction; 29975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 30975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_ioctl, 31975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(unsigned int cmd, unsigned long arg), 32975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(cmd, arg), 33975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 34975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 35975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(unsigned int, cmd) 36975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(unsigned long, arg) 37975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 38975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 39975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd = cmd; 40975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->arg = arg; 41975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 42975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("cmd=0x%x arg=0x%lx", __entry->cmd, __entry->arg) 43975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 44975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 45975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDECLARE_EVENT_CLASS(binder_lock_class, 46975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(const char *tag), 47975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(tag), 48975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 49975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(const char *, tag) 50975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 51975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 52975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->tag = tag; 53975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 54975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("tag=%s", __entry->tag) 55975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 56975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 57975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define DEFINE_BINDER_LOCK_EVENT(name) \ 58975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_lock_class, name, \ 59975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(const char *func), \ 60975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(func)) 61975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 62975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_LOCK_EVENT(binder_lock); 63975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_LOCK_EVENT(binder_locked); 64975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_LOCK_EVENT(binder_unlock); 65975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 66975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDECLARE_EVENT_CLASS(binder_function_return_class, 67975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(int ret), 68975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(ret), 69975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 70975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, ret) 71975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 72975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 73975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ret = ret; 74975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 75975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("ret=%d", __entry->ret) 76975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 77975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 78975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define DEFINE_BINDER_FUNCTION_RETURN_EVENT(name) \ 79975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_function_return_class, name, \ 80975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(int ret), \ 81975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(ret)) 82975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 83975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_ioctl_done); 84975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_write_done); 85975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_BINDER_FUNCTION_RETURN_EVENT(binder_read_done); 86975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 87975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_wait_for_work, 88975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(bool proc_work, bool transaction_stack, bool thread_todo), 89975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(proc_work, transaction_stack, thread_todo), 90975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 91975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 92975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(bool, proc_work) 93975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(bool, transaction_stack) 94975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(bool, thread_todo) 95975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 96975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 97975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc_work = proc_work; 98975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->transaction_stack = transaction_stack; 99975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->thread_todo = thread_todo; 100975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 101975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("proc_work=%d transaction_stack=%d thread_todo=%d", 102975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc_work, __entry->transaction_stack, 103975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->thread_todo) 104975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 105975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 106975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction, 107975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(bool reply, struct binder_transaction *t, 108975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg struct binder_node *target_node), 109975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(reply, t, target_node), 110975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 111975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 112975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, target_node) 113975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, to_proc) 114975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, to_thread) 115975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, reply) 116975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(unsigned int, code) 117975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(unsigned int, flags) 118975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 119975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 120975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 121975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->target_node = target_node ? target_node->debug_id : 0; 122975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->to_proc = t->to_proc->pid; 123975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->to_thread = t->to_thread ? t->to_thread->pid : 0; 124975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->reply = reply; 125975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->code = t->code; 126975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->flags = t->flags; 127975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 128975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d dest_node=%d dest_proc=%d dest_thread=%d reply=%d flags=0x%x code=0x%x", 129975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->target_node, 130975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->to_proc, __entry->to_thread, 131975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->reply, __entry->flags, __entry->code) 132975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 133975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 134975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_received, 135975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t), 136975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t), 137975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 138975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 139975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 140975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 141975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 142975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 143975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 144975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d", __entry->debug_id) 145975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 146975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 147975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_node_to_ref, 148975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, struct binder_node *node, 149975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg struct binder_ref *ref), 150975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, node, ref), 151975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 152975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 153975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 154975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, node_debug_id) 155da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg __field(binder_uintptr_t, node_ptr) 156975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, ref_debug_id) 157975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, ref_desc) 158975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 159975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 160975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 161975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_debug_id = node->debug_id; 162975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_ptr = node->ptr; 163975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id = ref->debug_id; 164975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_desc = ref->desc; 165975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 166da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg TP_printk("transaction=%d node=%d src_ptr=0x%016llx ==> dest_ref=%d dest_desc=%d", 167da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, 168da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg (u64)__entry->node_ptr, 169975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id, __entry->ref_desc) 170975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 171975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 172975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_ref_to_node, 173975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, struct binder_ref *ref), 174975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, ref), 175975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 176975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 177975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 178975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, ref_debug_id) 179975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, ref_desc) 180975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, node_debug_id) 181da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg __field(binder_uintptr_t, node_ptr) 182975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 183975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 184975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 185975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id = ref->debug_id; 186975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_desc = ref->desc; 187975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_debug_id = ref->node->debug_id; 188975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_ptr = ref->node->ptr; 189975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 190da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg TP_printk("transaction=%d node=%d src_ref=%d src_desc=%d ==> dest_ptr=0x%016llx", 191975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, 192da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg __entry->ref_debug_id, __entry->ref_desc, 193da49889deb34d351cdd113f9d1607dbb830cb5bbArve Hjønnevåg (u64)__entry->node_ptr) 194975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 195975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 196975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_ref_to_ref, 197975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, struct binder_ref *src_ref, 198975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg struct binder_ref *dest_ref), 199975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, src_ref, dest_ref), 200975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 201975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 202975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 203975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, node_debug_id) 204975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, src_ref_debug_id) 205975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, src_ref_desc) 206975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, dest_ref_debug_id) 207975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, dest_ref_desc) 208975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 209975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 210975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 211975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_debug_id = src_ref->node->debug_id; 212975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_debug_id = src_ref->debug_id; 213975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_desc = src_ref->desc; 214975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_debug_id = dest_ref->debug_id; 215975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_desc = dest_ref->desc; 216975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 217975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d node=%d src_ref=%d src_desc=%d ==> dest_ref=%d dest_desc=%d", 218975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, 219975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_debug_id, __entry->src_ref_desc, 220975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_debug_id, __entry->dest_ref_desc) 221975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 222975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 223975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_fd, 224975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, int src_fd, int dest_fd), 225975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, src_fd, dest_fd), 226975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 227975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 228975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 229975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, src_fd) 230975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, dest_fd) 231975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 232975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 233975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 234975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_fd = src_fd; 235975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_fd = dest_fd; 236975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 237975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d src_fd=%d ==> dest_fd=%d", 238975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->src_fd, __entry->dest_fd) 239975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 240975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 241975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDECLARE_EVENT_CLASS(binder_buffer_class, 242975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buf), 243975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buf), 244975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 245975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 246975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, data_size) 247975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, offsets_size) 248975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 249975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 250975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = buf->debug_id; 251975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->data_size = buf->data_size; 252975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offsets_size = buf->offsets_size; 253975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 254975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d data_size=%zd offsets_size=%zd", 255975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->data_size, __entry->offsets_size) 256975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 257975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 258975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_alloc_buf, 259975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 260975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 261975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 262975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_buffer_release, 263975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 264975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 265975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 266975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_failed_buffer_release, 267975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 268975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 269975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 270975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_update_page_range, 271975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_proc *proc, bool allocate, 272975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg void *start, void *end), 273975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(proc, allocate, start, end), 274975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 275975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, proc) 276975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(bool, allocate) 277975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, offset) 278975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, size) 279975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 280975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 281975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc = proc->pid; 282975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->allocate = allocate; 283975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offset = start - proc->buffer; 284975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->size = end - start; 285975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 286975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("proc=%d allocate=%d offset=%zu size=%zu", 287975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc, __entry->allocate, 288975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offset, __entry->size) 289975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 290975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 291975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_command, 292975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(uint32_t cmd), 293975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(cmd), 294975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 295975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, cmd) 296975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 297975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 298975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd = cmd; 299975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 300975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("cmd=0x%x %s", 301975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd, 302975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_command_strings) ? 303975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg binder_command_strings[_IOC_NR(__entry->cmd)] : 304975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg "unknown") 305975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 306975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 307975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_return, 308975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(uint32_t cmd), 309975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(cmd), 310975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 311975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, cmd) 312975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 313975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 314975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd = cmd; 315975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 316975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("cmd=0x%x %s", 317975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd, 318975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_return_strings) ? 319975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg binder_return_strings[_IOC_NR(__entry->cmd)] : 320975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg "unknown") 321975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 322975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 323975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#endif /* _BINDER_TRACE_H */ 324975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 325975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#undef TRACE_INCLUDE_PATH 326975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#undef TRACE_INCLUDE_FILE 327975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define TRACE_INCLUDE_PATH . 328975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define TRACE_INCLUDE_FILE binder_trace 329975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#include <trace/define_trace.h> 330