cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

i2c.h (4047B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/* I2C message transfer tracepoints
      3 *
      4 * Copyright (C) 2013 Red Hat, Inc. All Rights Reserved.
      5 * Written by David Howells (dhowells@redhat.com)
      6 */
      7#undef TRACE_SYSTEM
      8#define TRACE_SYSTEM i2c
      9
     10#if !defined(_TRACE_I2C_H) || defined(TRACE_HEADER_MULTI_READ)
     11#define _TRACE_I2C_H
     12
     13#include <linux/i2c.h>
     14#include <linux/tracepoint.h>
     15
     16/*
     17 * drivers/i2c/i2c-core-base.c
     18 */
     19extern int i2c_transfer_trace_reg(void);
     20extern void i2c_transfer_trace_unreg(void);
     21
     22/*
     23 * __i2c_transfer() write request
     24 */
     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 request
     57 */
     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->len
     82			 ),
     83	       i2c_transfer_trace_reg,
     84		       i2c_transfer_trace_unreg);
     85
     86/*
     87 * __i2c_transfer() read reply
     88 */
     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() result
    121 */
    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->ret
    139			 ),
    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>