brintos

brintos / linux-shallow public Read only

0
0
Text · 4.0 KiB · 142a23c Raw
147 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/* I2C message transfer tracepoints3 *4 * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.5 * Written by David Howells (dhowells@redhat.com)6 */7#undef TRACE_SYSTEM8#define TRACE_SYSTEM i2c9 10#if !defined(_TRACE_I2C_H) || defined(TRACE_HEADER_MULTI_READ)11#define _TRACE_I2C_H12 13#include <linux/i2c.h>14#include <linux/tracepoint.h>15 16/*17 * drivers/i2c/i2c-core-base.c18 */19extern int i2c_transfer_trace_reg(void);20extern void i2c_transfer_trace_unreg(void);21 22/*23 * __i2c_transfer() write request24 */25TRACE_EVENT_FN(i2c_write,26	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,27			int num),28	       TP_ARGS(adap, msg, num),29	       TP_STRUCT__entry(30		       __field(int,	adapter_nr		)31		       __field(__u16,	msg_nr			)32		       __field(__u16,	addr			)33		       __field(__u16,	flags			)34		       __field(__u16,	len			)35		       __dynamic_array(__u8, buf, msg->len)	),36	       TP_fast_assign(37		       __entry->adapter_nr = adap->nr;38		       __entry->msg_nr = num;39		       __entry->addr = msg->addr;40		       __entry->flags = msg->flags;41		       __entry->len = msg->len;42		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);43			      ),44	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",45			 __entry->adapter_nr,46			 __entry->msg_nr,47			 __entry->addr,48			 __entry->flags,49			 __entry->len,50			 __entry->len, __get_dynamic_array(buf)51			 ),52	       i2c_transfer_trace_reg,53	       i2c_transfer_trace_unreg);54 55/*56 * __i2c_transfer() read request57 */58TRACE_EVENT_FN(i2c_read,59	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,60			int num),61	       TP_ARGS(adap, msg, num),62	       TP_STRUCT__entry(63		       __field(int,	adapter_nr		)64		       __field(__u16,	msg_nr			)65		       __field(__u16,	addr			)66		       __field(__u16,	flags			)67		       __field(__u16,	len			)68				),69	       TP_fast_assign(70		       __entry->adapter_nr = adap->nr;71		       __entry->msg_nr = num;72		       __entry->addr = msg->addr;73		       __entry->flags = msg->flags;74		       __entry->len = msg->len;75			      ),76	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u",77			 __entry->adapter_nr,78			 __entry->msg_nr,79			 __entry->addr,80			 __entry->flags,81			 __entry->len82			 ),83	       i2c_transfer_trace_reg,84		       i2c_transfer_trace_unreg);85 86/*87 * __i2c_transfer() read reply88 */89TRACE_EVENT_FN(i2c_reply,90	       TP_PROTO(const struct i2c_adapter *adap, const struct i2c_msg *msg,91			int num),92	       TP_ARGS(adap, msg, num),93	       TP_STRUCT__entry(94		       __field(int,	adapter_nr		)95		       __field(__u16,	msg_nr			)96		       __field(__u16,	addr			)97		       __field(__u16,	flags			)98		       __field(__u16,	len			)99		       __dynamic_array(__u8, buf, msg->len)	),100	       TP_fast_assign(101		       __entry->adapter_nr = adap->nr;102		       __entry->msg_nr = num;103		       __entry->addr = msg->addr;104		       __entry->flags = msg->flags;105		       __entry->len = msg->len;106		       memcpy(__get_dynamic_array(buf), msg->buf, msg->len);107			      ),108	       TP_printk("i2c-%d #%u a=%03x f=%04x l=%u [%*phD]",109			 __entry->adapter_nr,110			 __entry->msg_nr,111			 __entry->addr,112			 __entry->flags,113			 __entry->len,114			 __entry->len, __get_dynamic_array(buf)115			 ),116	       i2c_transfer_trace_reg,117	       i2c_transfer_trace_unreg);118 119/*120 * __i2c_transfer() result121 */122TRACE_EVENT_FN(i2c_result,123	       TP_PROTO(const struct i2c_adapter *adap, int num, int ret),124	       TP_ARGS(adap, num, ret),125	       TP_STRUCT__entry(126		       __field(int,	adapter_nr		)127		       __field(__u16,	nr_msgs			)128		       __field(__s16,	ret			)129				),130	       TP_fast_assign(131		       __entry->adapter_nr = adap->nr;132		       __entry->nr_msgs = num;133		       __entry->ret = ret;134			      ),135	       TP_printk("i2c-%d n=%u ret=%d",136			 __entry->adapter_nr,137			 __entry->nr_msgs,138			 __entry->ret139			 ),140	       i2c_transfer_trace_reg,141	       i2c_transfer_trace_unreg);142 143#endif /* _TRACE_I2C_H */144 145/* This part must be outside protection */146#include <trace/define_trace.h>147