greybus: tracepoints: add tracepoints for host_device tx/rx
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Wed, 23 Sep 2015 01:06:38 +0000 (18:06 -0700)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 23 Sep 2015 19:39:24 +0000 (12:39 -0700)
This patch adds new tracepoint declarations to greybus_trace.h to allow for
capture of greybus host device tx and rx events. These two tracepoints
allow an observer to see the point where the hardware interface driver
performs the relevant read or write to receive or write the data it's been
given from the higher layer greybus driver.

The following two new tracepoints are declared:
- trace_gb_host_device_send
- trace_gb_host_device_recv

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/core.c
drivers/staging/greybus/greybus_trace.h

index 765e0db844f1b5f6ead173b7d3cfd9e42520d07a..ea23aaff946509d3f79cf184b929e5467083fe5d 100644 (file)
@@ -13,6 +13,9 @@
 #include "greybus.h"
 #include "greybus_trace.h"
 
+EXPORT_TRACEPOINT_SYMBOL_GPL(gb_host_device_send);
+EXPORT_TRACEPOINT_SYMBOL_GPL(gb_host_device_recv);
+
 /* Allow greybus to be disabled at boot if needed */
 static bool nogreybus;
 #ifdef MODULE
index abceb3ac7a1340a791c81bdfeac055caad31b740..6c88d34d6f5d4aaad6672cb59427105b34b66a7d 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/tracepoint.h>
 
 struct gb_message;
+struct greybus_host_device;
 
 DECLARE_EVENT_CLASS(gb_message,
 
@@ -105,6 +106,55 @@ DEFINE_EVENT(gb_message, gb_message_cancel_incoming,
        TP_ARGS(message)
 );
 
+DECLARE_EVENT_CLASS(gb_host_device,
+
+       TP_PROTO(struct greybus_host_device *hd, u16 intf_cport_id,
+                size_t payload_size),
+
+       TP_ARGS(hd, intf_cport_id, payload_size),
+
+       TP_STRUCT__entry(
+               __string(name, dev_name(hd->parent))
+               __field(u16, intf_cport_id)
+               __field(size_t, payload_size)
+       ),
+
+       TP_fast_assign(
+               __assign_str(name, dev_name(hd->parent))
+               __entry->intf_cport_id = intf_cport_id;
+               __entry->payload_size = payload_size;
+       ),
+
+       TP_printk("greybus:%s if_id=%04x l=%zu", __get_str(name),
+                 __entry->intf_cport_id, __entry->payload_size)
+);
+
+/*
+ * tracepoint name     greybus:gb_host_device_send
+ * description         tracepoint representing the point data are transmitted
+ * location            es1.c/es2.c:message_send
+ */
+DEFINE_EVENT(gb_host_device, gb_host_device_send,
+
+       TP_PROTO(struct greybus_host_device *hd, u16 intf_cport_id,
+                size_t payload_size),
+
+       TP_ARGS(hd, intf_cport_id, payload_size)
+);
+
+/*
+ * tracepoint name     greybus:gb_host_device_recv
+ * description         tracepoint representing the point data are received
+ * location            es1.c/es2.c:cport_in_callback
+ */
+DEFINE_EVENT(gb_host_device, gb_host_device_recv,
+
+       TP_PROTO(struct greybus_host_device *hd, u16 intf_cport_id,
+                size_t payload_size),
+
+       TP_ARGS(hd, intf_cport_id, payload_size)
+);
+
 #endif /* _TRACE_GREYBUS_H */
 
 /* This part must be outside protection */