[PATCH 4/5] media: v4l2-mem2mem: add v4l2_m2m_buf_done trace point

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Emil Velikov <emil.velikov@xxxxxxxxxxxxx>

Move the function out of the header, as required by the trace API and
add a tracepoint.

Signed-off-by: Emil Velikov <emil.velikov@xxxxxxxxxxxxx>
---
 drivers/media/v4l2-core/v4l2-mem2mem.c |  9 ++++++
 drivers/media/v4l2-core/v4l2-trace.c   |  1 +
 include/media/v4l2-mem2mem.h           | 10 +++----
 include/trace/events/v4l2.h            | 41 ++++++++++++++++++++++++++
 4 files changed, 56 insertions(+), 5 deletions(-)

diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index bf83d1fae701..a83d3e4e7a85 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -555,6 +555,15 @@ void v4l2_m2m_buf_done_and_job_finish(struct v4l2_m2m_dev *m2m_dev,
 }
 EXPORT_SYMBOL(v4l2_m2m_buf_done_and_job_finish);
 
+void
+v4l2_m2m_buf_done(struct vb2_v4l2_buffer *buf, enum vb2_buffer_state state)
+{
+	// TODO: Emil move the trace after done?
+	trace_v4l2_m2m_buf_done(&buf->vb2_buf, state);
+	vb2_buffer_done(&buf->vb2_buf, state);
+}
+EXPORT_SYMBOL(v4l2_m2m_buf_done);
+
 void v4l2_m2m_suspend(struct v4l2_m2m_dev *m2m_dev)
 {
 	unsigned long flags;
diff --git a/drivers/media/v4l2-core/v4l2-trace.c b/drivers/media/v4l2-core/v4l2-trace.c
index cde408d06fdc..b70208101f3c 100644
--- a/drivers/media/v4l2-core/v4l2-trace.c
+++ b/drivers/media/v4l2-core/v4l2-trace.c
@@ -11,6 +11,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_buf_queue);
 EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_dqbuf);
 EXPORT_TRACEPOINT_SYMBOL_GPL(vb2_v4l2_qbuf);
 EXPORT_TRACEPOINT_SYMBOL_GPL(v4l2_ioctl_s_fmt);
+EXPORT_TRACEPOINT_SYMBOL_GPL(v4l2_m2m_buf_done);
 EXPORT_TRACEPOINT_SYMBOL_GPL(v4l2_m2m_schedule);
 EXPORT_TRACEPOINT_SYMBOL_GPL(v4l2_m2m_schedule_failed);
 EXPORT_TRACEPOINT_SYMBOL_GPL(v4l2_m2m_queue_job);
diff --git a/include/media/v4l2-mem2mem.h b/include/media/v4l2-mem2mem.h
index 82bf54254bd8..013fd355ff82 100644
--- a/include/media/v4l2-mem2mem.h
+++ b/include/media/v4l2-mem2mem.h
@@ -229,11 +229,11 @@ void v4l2_m2m_buf_done_and_job_finish(struct v4l2_m2m_dev *m2m_dev,
 				      struct v4l2_m2m_ctx *m2m_ctx,
 				      enum vb2_buffer_state state);
 
-static inline void
-v4l2_m2m_buf_done(struct vb2_v4l2_buffer *buf, enum vb2_buffer_state state)
-{
-	vb2_buffer_done(&buf->vb2_buf, state);
-}
+/**
+ * Something something
+ */
+void
+v4l2_m2m_buf_done(struct vb2_v4l2_buffer *buf, enum vb2_buffer_state state);
 
 /**
  * v4l2_m2m_clear_state() - clear encoding/decoding state
diff --git a/include/trace/events/v4l2.h b/include/trace/events/v4l2.h
index 8e382bad5f8e..a545f6a13d0a 100644
--- a/include/trace/events/v4l2.h
+++ b/include/trace/events/v4l2.h
@@ -56,6 +56,20 @@ SHOW_TYPE
 
 SHOW_FIELD
 
+#define show_state(state)						\
+	__print_symbolic(state, SHOW_STATE)
+
+#define SHOW_STATE							\
+	EM( VB2_BUF_STATE_DEQUEUED,	"DEQUEUED" )			\
+	EM( VB2_BUF_STATE_IN_REQUEST,	"IN_REQUEST" )			\
+	EM( VB2_BUF_STATE_PREPARING,	"PREPARING" )			\
+	EM( VB2_BUF_STATE_QUEUED,	"QUEUED" )			\
+	EM( VB2_BUF_STATE_ACTIVE,	"ACTIVE" )			\
+	EM( VB2_BUF_STATE_DONE,		"DONE" )			\
+	EMe(VB2_BUF_STATE_ERROR,	"ERROR" )
+
+SHOW_STATE
+
 #define show_reason(state)						\
 	__print_symbolic(state, SHOW_REASON)
 
@@ -282,6 +296,33 @@ DEFINE_EVENT(vb2_v4l2_event_class, vb2_v4l2_qbuf,
 	TP_ARGS(q, vb)
 );
 
+TRACE_EVENT(v4l2_m2m_buf_done,
+	TP_PROTO(struct vb2_buffer *vb, enum vb2_buffer_state state),
+	TP_ARGS(vb, state),
+
+	TP_STRUCT__entry(
+		__field(int, minor)
+		__field(struct v4l2_fh *, fh)
+		__field(s32, index)
+		__field(u32, type)
+		__field(enum vb2_buffer_state, state)
+	),
+
+	TP_fast_assign(
+		struct v4l2_fh *owner = vb->vb2_queue->owner;
+
+		__entry->minor = owner ? owner->vdev->minor : -1;
+		__entry->fh = owner;
+		__entry->index = vb->index;
+		__entry->type = vb->type;
+		__entry->state = state;
+	),
+
+	TP_printk("minor = %d, fh = %p, index = %u, type = %s, state = %s",
+		__entry->minor, __entry->fh, __entry->index,
+		show_type(__entry->type), show_state(__entry->state))
+);
+
 /*
  * v4l_m2m job tracing
  * expected order of events:
-- 
2.31.1




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux