Messages in this thread | | | Subject | Re: [PATCH] gpio: add trace events for setting direction and value | From | Steven Rostedt <> | Date | Wed, 16 Feb 2011 12:12:51 -0500 |
| |
On Wed, 2011-02-16 at 18:03 +0100, Uwe Kleine-König wrote:
> --- /dev/null > +++ b/include/trace/events/gpio.h > @@ -0,0 +1,56 @@ > +#undef TRACE_SYSTEM > +#define TRACE_SYSTEM gpio > + > +#if !defined(_TRACE_GPIO_H) || defined(TRACE_HEADER_MULTI_READ) > +#define _TRACE_GPIO_H > + > +#include <linux/tracepoint.h> > + > +TRACE_EVENT(gpio_direction, > + > + TP_PROTO(unsigned gpio, int in, int err), > + > + TP_ARGS(gpio, in, err), > + > + TP_STRUCT__entry( > + __field(unsigned, gpio) > + __field(int, in) > + __field(int, err) > + ), > + > + TP_fast_assign( > + __entry->gpio = gpio; > + __entry->in = in; > + __entry->err = err; > + ), > + > + TP_printk("%u %3s (%d)", __entry->gpio, > + __entry->in ? "in" : "out", __entry->err) > +); > + > +TRACE_EVENT(gpio_value, > + > + TP_PROTO(unsigned gpio, int get, int value), > + > + TP_ARGS(gpio, get, value), > + > + TP_STRUCT__entry( > + __field(unsigned, gpio) > + __field(int, get) > + __field(int, value) > + ), > + > + TP_fast_assign( > + __entry->gpio = gpio; > + __entry->get = get; > + __entry->value = value; > + ), > + > + TP_printk("%u %3s %d", __entry->gpio, > + __entry->get ? "get" : "set", __entry->value) > +); > +
Note: to save the memory footprint of these tracepoints, you can use DEFINE_EVENT_PRINT(). You can see the usage for this in the include/trace/events/kmem.h.
But to do this, you will need to have a single TP_STRUCT__entry() for both. Not sure if this is what you want.
TP_STRUCT__entry( __field(unsigned, gpiq) __field(int, get_in) __field(int, value_err)
??
Just a suggestion, but may not be worth it.
-- Steve
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |