#undef TRACE_SYSTEM
#define TRACE_SYSTEM vb2

#if !defined(_TRACE_VB2_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_VB2_H

#include <linux/tracepoint.h>
#include <media/videobuf2-core.h>

DECLARE_EVENT_CLASS(vb2_event_class,
	TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
	TP_ARGS(q, vb),

	TP_STRUCT__entry(
		__field(void *, owner)
		__field(u32, queued_count)
		__field(int, owned_by_drv_count)
		__field(u32, index)
		__field(u32, type)
		__field(u32, bytesused)
	),

	TP_fast_assign(
		__entry->owner = q->owner;
		__entry->queued_count = q->queued_count;
		__entry->owned_by_drv_count =
			atomic_read(&q->owned_by_drv_count);
		__entry->index = vb->index;
		__entry->type = vb->type;
		__entry->bytesused = vb->planes[0].bytesused;
	),

	TP_printk("owner = %p, queued = %u, owned_by_drv = %d, index = %u, "
		  "type = %u, bytesused = %u", __entry->owner,
		  __entry->queued_count,
		  __entry->owned_by_drv_count,
		  __entry->index, __entry->type,
		  __entry->bytesused
	)
)

DEFINE_EVENT(vb2_event_class, vb2_buf_done,
	TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
	TP_ARGS(q, vb)
);

DEFINE_EVENT(vb2_event_class, vb2_buf_queue,
	TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
	TP_ARGS(q, vb)
);

DEFINE_EVENT(vb2_event_class, vb2_dqbuf,
	TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
	TP_ARGS(q, vb)
);

DEFINE_EVENT(vb2_event_class, vb2_qbuf,
	TP_PROTO(struct vb2_queue *q, struct vb2_buffer *vb),
	TP_ARGS(q, vb)
);

#endif /* if !defined(_TRACE_VB2_H) || defined(TRACE_HEADER_MULTI_READ) */

/* This part must be outside protection */
#include <trace/define_trace.h>
