binder_trace.h revision 975a1ac9a9fe65d66ee1726c0db6dc58e53d232a
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) 155975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(void __user *, 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 ), 166975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d node=%d src_ptr=0x%p ==> dest_ref=%d dest_desc=%d", 167975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, __entry->node_ptr, 168975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id, __entry->ref_desc) 169975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 170975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 171975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_ref_to_node, 172975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, struct binder_ref *ref), 173975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, ref), 174975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 175975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 176975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 177975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, ref_debug_id) 178975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, ref_desc) 179975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, node_debug_id) 180975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(void __user *, node_ptr) 181975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 182975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 183975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 184975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id = ref->debug_id; 185975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_desc = ref->desc; 186975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_debug_id = ref->node->debug_id; 187975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_ptr = ref->node->ptr; 188975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 189975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d node=%d src_ref=%d src_desc=%d ==> dest_ptr=0x%p", 190975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, 191975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->ref_debug_id, __entry->ref_desc, __entry->node_ptr) 192975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 193975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 194975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_ref_to_ref, 195975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, struct binder_ref *src_ref, 196975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg struct binder_ref *dest_ref), 197975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, src_ref, dest_ref), 198975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 199975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 200975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 201975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, node_debug_id) 202975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, src_ref_debug_id) 203975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, src_ref_desc) 204975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, dest_ref_debug_id) 205975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, dest_ref_desc) 206975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 207975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 208975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 209975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->node_debug_id = src_ref->node->debug_id; 210975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_debug_id = src_ref->debug_id; 211975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_desc = src_ref->desc; 212975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_debug_id = dest_ref->debug_id; 213975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_desc = dest_ref->desc; 214975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 215975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d node=%d src_ref=%d src_desc=%d ==> dest_ref=%d dest_desc=%d", 216975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->node_debug_id, 217975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_ref_debug_id, __entry->src_ref_desc, 218975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_ref_debug_id, __entry->dest_ref_desc) 219975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 220975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 221975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_transaction_fd, 222975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_transaction *t, int src_fd, int dest_fd), 223975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(t, src_fd, dest_fd), 224975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 225975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 226975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 227975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, src_fd) 228975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, dest_fd) 229975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 230975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 231975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = t->debug_id; 232975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->src_fd = src_fd; 233975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->dest_fd = dest_fd; 234975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 235975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d src_fd=%d ==> dest_fd=%d", 236975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->src_fd, __entry->dest_fd) 237975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 238975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 239975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDECLARE_EVENT_CLASS(binder_buffer_class, 240975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buf), 241975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buf), 242975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 243975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, debug_id) 244975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, data_size) 245975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, offsets_size) 246975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 247975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 248975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id = buf->debug_id; 249975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->data_size = buf->data_size; 250975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offsets_size = buf->offsets_size; 251975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 252975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("transaction=%d data_size=%zd offsets_size=%zd", 253975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->debug_id, __entry->data_size, __entry->offsets_size) 254975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 255975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 256975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_alloc_buf, 257975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 258975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 259975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 260975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_buffer_release, 261975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 262975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 263975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 264975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågDEFINE_EVENT(binder_buffer_class, binder_transaction_failed_buffer_release, 265975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_buffer *buffer), 266975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(buffer)); 267975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 268975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_update_page_range, 269975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(struct binder_proc *proc, bool allocate, 270975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg void *start, void *end), 271975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(proc, allocate, start, end), 272975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 273975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(int, proc) 274975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(bool, allocate) 275975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, offset) 276975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(size_t, size) 277975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 278975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 279975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc = proc->pid; 280975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->allocate = allocate; 281975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offset = start - proc->buffer; 282975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->size = end - start; 283975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 284975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("proc=%d allocate=%d offset=%zu size=%zu", 285975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->proc, __entry->allocate, 286975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->offset, __entry->size) 287975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 288975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 289975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_command, 290975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(uint32_t cmd), 291975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(cmd), 292975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 293975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, cmd) 294975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 295975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 296975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd = cmd; 297975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 298975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("cmd=0x%x %s", 299975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd, 300975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_command_strings) ? 301975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg binder_command_strings[_IOC_NR(__entry->cmd)] : 302975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg "unknown") 303975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 304975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 305975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve HjønnevågTRACE_EVENT(binder_return, 306975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_PROTO(uint32_t cmd), 307975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_ARGS(cmd), 308975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_STRUCT__entry( 309975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __field(uint32_t, cmd) 310975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 311975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_fast_assign( 312975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd = cmd; 313975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg ), 314975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg TP_printk("cmd=0x%x %s", 315975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg __entry->cmd, 316975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg _IOC_NR(__entry->cmd) < ARRAY_SIZE(binder_return_strings) ? 317975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg binder_return_strings[_IOC_NR(__entry->cmd)] : 318975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg "unknown") 319975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg); 320975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 321975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#endif /* _BINDER_TRACE_H */ 322975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg 323975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#undef TRACE_INCLUDE_PATH 324975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#undef TRACE_INCLUDE_FILE 325975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define TRACE_INCLUDE_PATH . 326975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#define TRACE_INCLUDE_FILE binder_trace 327975a1ac9a9fe65d66ee1726c0db6dc58e53d232aArve Hjønnevåg#include <trace/define_trace.h> 328