laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/dahdi-linux/+/42008?usp=email )
Change subject: WIP: attempt to introduce tracepoints to dahdi (trunkdev) ......................................................................
WIP: attempt to introduce tracepoints to dahdi (trunkdev)
Change-Id: I800cdd6f6d44752ebf2171e8beeb8fd646e00774 --- M drivers/dahdi/trunkdev/trunkdev.c A include/dahdi/dahdi_trace.h 2 files changed, 50 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/dahdi-linux refs/changes/08/42008/1
diff --git a/drivers/dahdi/trunkdev/trunkdev.c b/drivers/dahdi/trunkdev/trunkdev.c index 6518109..1d5a8a5 100644 --- a/drivers/dahdi/trunkdev/trunkdev.c +++ b/drivers/dahdi/trunkdev/trunkdev.c @@ -63,6 +63,9 @@ } dahdi; };
+#define CREATE_TRACE_POINTS +#include <dahdi/dahdi_trace.h> + /* process one incoming E1 frame (32 bytes; one for each TS) */ static void _span_demux_one_frame(struct dahdi_trunkdev *td, const uint8_t *data) { @@ -202,6 +205,8 @@ * _dahdi_receive() via _span_demux_one_frame(), this would lead to re-entrancy */ BUG_ON(is_master);
+ trace_trunkdev_tick(td); + /* trigger transmission + reception of E1 frames */ for (i = 0; i < DAHDI_CHUNKSIZE; i++) { uint8_t frame[32]; @@ -537,9 +542,10 @@ if (rc < 0) { /* insufficient data available */ if (file->f_flags & O_NONBLOCK) { - if (copied == 0) + if (copied == 0) { + trace_trunkdev_read_eagain(td); return -EAGAIN; - else + } else return copied; } /* blocking wait for frames in FIFO or for device disappearing */ diff --git a/include/dahdi/dahdi_trace.h b/include/dahdi/dahdi_trace.h new file mode 100644 index 0000000..0a4443a --- /dev/null +++ b/include/dahdi/dahdi_trace.h @@ -0,0 +1,42 @@ + +#if !defined(_TRACE_DAHDI_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_DAHDI_H + +#include <linux/tracepoint.h> + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM dahdi + +TRACE_EVENT(trunkdev_tick, + TP_PROTO(struct dahdi_trunkdev *td), + TP_ARGS(td), + TP_STRUCT__entry( + __array( char, name, 40 ) + ), + TP_fast_assign( + strscpy(__entry->name, td->dahdi.span.name, 40); + ), + TP_printk("name: %s", __entry->name) +); + +TRACE_EVENT(trunkdev_read_eagain, + TP_PROTO(struct dahdi_trunkdev *td), + TP_ARGS(td), + TP_STRUCT__entry( + __array( char, name, 40 ) + ), + TP_fast_assign( + strscpy(__entry->name, td->dahdi.span.name, 40); + ), + TP_printk("name: %s", __entry->name) +); + +#endif + +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH dahdi +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE dahdi_trace + +/* This part must be outside protection */ +#include <trace/define_trace.h>