Re: [PATCH 2/2] [media] videobuf2: add trace events

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

 



On Thu, 25 Jun 2015 12:01:27 +0200
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx> wrote:

> diff --git a/include/trace/events/v4l2.h b/include/trace/events/v4l2.h
> index 89d0497..3d15cf1 100644
> --- a/include/trace/events/v4l2.h
> +++ b/include/trace/events/v4l2.h
> @@ -175,9 +175,108 @@ SHOW_FIELD
>  		)							\
>  	)
>  
> +#define VB2_TRACE_EVENT(event_name)					\

This is what we have DECLARE_EVENT_CLASS for. Please use that,
otherwise you are adding about 5k of text per event (where as
DEFINE_EVENT adds only about 250 bytes).

DECLARE_EVENT_CLASS(vb2_event_class,
[..]


> +	TRACE_EVENT(event_name,						\
> +		TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),	\
> +									\
> +		TP_ARGS(q, vb),						\
> +									\
> +		TP_STRUCT__entry(					\
> +			__field(int, minor)				\
> +			__field(u32, queued_count)			\
> +			__field(int, owned_by_drv_count)		\
> +			__field(u32, index)				\
> +			__field(u32, type)				\
> +			__field(u32, bytesused)				\
> +			__field(u32, flags)				\
> +			__field(u32, field)				\
> +			__field(s64, timestamp)				\
> +			__field(u32, timecode_type)			\
> +			__field(u32, timecode_flags)			\
> +			__field(u8, timecode_frames)			\
> +			__field(u8, timecode_seconds)			\
> +			__field(u8, timecode_minutes)			\
> +			__field(u8, timecode_hours)			\
> +			__field(u8, timecode_userbits0)			\
> +			__field(u8, timecode_userbits1)			\
> +			__field(u8, timecode_userbits2)			\
> +			__field(u8, timecode_userbits3)			\
> +			__field(u32, sequence)				\
> +		),							\
> +									\
> +		TP_fast_assign(						\
> +			__entry->minor = q->owner ?			\
> +				q->owner->vdev->minor : -1;		\
> +			__entry->queued_count = q->queued_count;	\
> +			__entry->owned_by_drv_count =			\
> +				atomic_read(&q->owned_by_drv_count);	\
> +			__entry->index = vb->v4l2_buf.index;		\
> +			__entry->type = vb->v4l2_buf.type;		\
> +			__entry->bytesused = vb->v4l2_buf.bytesused;	\
> +			__entry->flags = vb->v4l2_buf.flags;		\
> +			__entry->field = vb->v4l2_buf.field;		\
> +			__entry->timestamp =				\
> +				timeval_to_ns(&vb->v4l2_buf.timestamp);	\
> +			__entry->timecode_type =			\
> +				vb->v4l2_buf.timecode.type;		\
> +			__entry->timecode_flags =			\
> +				vb->v4l2_buf.timecode.flags;		\
> +			__entry->timecode_frames =			\
> +				vb->v4l2_buf.timecode.frames;		\
> +			__entry->timecode_seconds =			\
> +				vb->v4l2_buf.timecode.seconds;		\
> +			__entry->timecode_minutes =			\
> +				vb->v4l2_buf.timecode.minutes;		\
> +			__entry->timecode_hours =			\
> +				vb->v4l2_buf.timecode.hours;		\
> +			__entry->timecode_userbits0 =			\
> +				vb->v4l2_buf.timecode.userbits[0];	\
> +			__entry->timecode_userbits1 =			\
> +				vb->v4l2_buf.timecode.userbits[1];	\
> +			__entry->timecode_userbits2 =			\
> +				vb->v4l2_buf.timecode.userbits[2];	\
> +			__entry->timecode_userbits3 =			\
> +				vb->v4l2_buf.timecode.userbits[3];	\
> +			__entry->sequence = vb->v4l2_buf.sequence;	\
> +		),							\
> +									\
> +		TP_printk("minor = %d, queued = %u, owned_by_drv = %d "	\
> +			  "index = %u, type = %s, "			\
> +			  "bytesused = %u, flags = %s, "		\
> +			  "field = %s, timestamp = %llu, timecode = { "	\
> +			  "type = %s, flags = %s, frames = %u, "	\
> +			  "seconds = %u, minutes = %u, hours = %u, "	\
> +			  "userbits = { %u %u %u %u } }, "		\
> +			  "sequence = %u", __entry->minor,		\
> +			  __entry->queued_count,			\
> +			  __entry->owned_by_drv_count,			\
> +			  __entry->index, show_type(__entry->type),	\
> +			  __entry->bytesused,				\
> +			  show_flags(__entry->flags),			\
> +			  show_field(__entry->field),			\
> +			  __entry->timestamp,				\
> +			  show_timecode_type(__entry->timecode_type),	\
> +			  show_timecode_flags(__entry->timecode_flags),	\
> +			  __entry->timecode_frames,			\
> +			  __entry->timecode_seconds,			\
> +			  __entry->timecode_minutes,			\
> +			  __entry->timecode_hours,			\
> +			  __entry->timecode_userbits0,			\
> +			  __entry->timecode_userbits1,			\
> +			  __entry->timecode_userbits2,			\
> +			  __entry->timecode_userbits3,			\
> +			  __entry->sequence				\
> +		)							\
> +	)
> +
>  V4L2_TRACE_EVENT(v4l2_dqbuf);
>  V4L2_TRACE_EVENT(v4l2_qbuf);

While you are at it, nuke the above macro and convert that too.

>  
> +VB2_TRACE_EVENT(vb2_buf_done);
> +VB2_TRACE_EVENT(vb2_buf_queue);
> +VB2_TRACE_EVENT(vb2_dqbuf);
> +VB2_TRACE_EVENT(vb2_qbuf);

DEFINE_EVENT(vb2_event_class, vb2_buf_done, ...)
[..]

-- Steve

> +
>  #endif /* if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ) */
>  
>  /* This part must be outside protection */

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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