Commit | Line | Data |
---|---|---|
e09a6084 WF |
1 | #undef TRACE_SYSTEM |
2 | #define TRACE_SYSTEM v4l2 | |
3 | ||
4 | #if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ) | |
5 | #define _TRACE_V4L2_H | |
6 | ||
7 | #include <linux/tracepoint.h> | |
8 | ||
9 | #define show_type(type) \ | |
10 | __print_symbolic(type, \ | |
11 | { V4L2_BUF_TYPE_VIDEO_CAPTURE, "VIDEO_CAPTURE" }, \ | |
12 | { V4L2_BUF_TYPE_VIDEO_OUTPUT, "VIDEO_OUTPUT" }, \ | |
13 | { V4L2_BUF_TYPE_VIDEO_OVERLAY, "VIDEO_OVERLAY" }, \ | |
14 | { V4L2_BUF_TYPE_VBI_CAPTURE, "VBI_CAPTURE" }, \ | |
15 | { V4L2_BUF_TYPE_VBI_OUTPUT, "VBI_OUTPUT" }, \ | |
16 | { V4L2_BUF_TYPE_SLICED_VBI_CAPTURE, "SLICED_VBI_CAPTURE" }, \ | |
17 | { V4L2_BUF_TYPE_SLICED_VBI_OUTPUT, "SLICED_VBI_OUTPUT" }, \ | |
18 | { V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY, "VIDEO_OUTPUT_OVERLAY" },\ | |
19 | { V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, "VIDEO_CAPTURE_MPLANE" },\ | |
20 | { V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, "VIDEO_OUTPUT_MPLANE" }, \ | |
21 | { V4L2_BUF_TYPE_PRIVATE, "PRIVATE" }) | |
22 | ||
23 | #define show_field(field) \ | |
24 | __print_symbolic(field, \ | |
25 | { V4L2_FIELD_ANY, "ANY" }, \ | |
26 | { V4L2_FIELD_NONE, "NONE" }, \ | |
27 | { V4L2_FIELD_TOP, "TOP" }, \ | |
28 | { V4L2_FIELD_BOTTOM, "BOTTOM" }, \ | |
29 | { V4L2_FIELD_INTERLACED, "INTERLACED" }, \ | |
30 | { V4L2_FIELD_SEQ_TB, "SEQ_TB" }, \ | |
31 | { V4L2_FIELD_SEQ_BT, "SEQ_BT" }, \ | |
32 | { V4L2_FIELD_ALTERNATE, "ALTERNATE" }, \ | |
33 | { V4L2_FIELD_INTERLACED_TB, "INTERLACED_TB" }, \ | |
34 | { V4L2_FIELD_INTERLACED_BT, "INTERLACED_BT" }) | |
35 | ||
36 | #define show_timecode_type(type) \ | |
37 | __print_symbolic(type, \ | |
38 | { V4L2_TC_TYPE_24FPS, "24FPS" }, \ | |
39 | { V4L2_TC_TYPE_25FPS, "25FPS" }, \ | |
40 | { V4L2_TC_TYPE_30FPS, "30FPS" }, \ | |
41 | { V4L2_TC_TYPE_50FPS, "50FPS" }, \ | |
42 | { V4L2_TC_TYPE_60FPS, "60FPS" }) | |
43 | ||
44 | #define show_flags(flags) \ | |
45 | __print_flags(flags, "|", \ | |
46 | { V4L2_BUF_FLAG_MAPPED, "MAPPED" }, \ | |
47 | { V4L2_BUF_FLAG_QUEUED, "QUEUED" }, \ | |
48 | { V4L2_BUF_FLAG_DONE, "DONE" }, \ | |
49 | { V4L2_BUF_FLAG_KEYFRAME, "KEYFRAME" }, \ | |
50 | { V4L2_BUF_FLAG_PFRAME, "PFRAME" }, \ | |
51 | { V4L2_BUF_FLAG_BFRAME, "BFRAME" }, \ | |
52 | { V4L2_BUF_FLAG_ERROR, "ERROR" }, \ | |
53 | { V4L2_BUF_FLAG_TIMECODE, "TIMECODE" }, \ | |
54 | { V4L2_BUF_FLAG_PREPARED, "PREPARED" }, \ | |
55 | { V4L2_BUF_FLAG_NO_CACHE_INVALIDATE, "NO_CACHE_INVALIDATE" }, \ | |
56 | { V4L2_BUF_FLAG_NO_CACHE_CLEAN, "NO_CACHE_CLEAN" }, \ | |
57 | { V4L2_BUF_FLAG_TIMESTAMP_MASK, "TIMESTAMP_MASK" }, \ | |
58 | { V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN, "TIMESTAMP_UNKNOWN" }, \ | |
59 | { V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC, "TIMESTAMP_MONOTONIC" }, \ | |
60 | { V4L2_BUF_FLAG_TIMESTAMP_COPY, "TIMESTAMP_COPY" }) | |
61 | ||
62 | #define show_timecode_flags(flags) \ | |
63 | __print_flags(flags, "|", \ | |
64 | { V4L2_TC_FLAG_DROPFRAME, "DROPFRAME" }, \ | |
65 | { V4L2_TC_FLAG_COLORFRAME, "COLORFRAME" }, \ | |
66 | { V4L2_TC_USERBITS_USERDEFINED, "USERBITS_USERDEFINED" }, \ | |
67 | { V4L2_TC_USERBITS_8BITCHARS, "USERBITS_8BITCHARS" }) | |
68 | ||
69 | #define LTTNG_V4L2_TRACE_EVENT(event_name) \ | |
70 | TRACE_EVENT(event_name, \ | |
71 | TP_PROTO(int minor, struct v4l2_buffer *buf), \ | |
72 | \ | |
73 | TP_ARGS(minor, buf), \ | |
74 | \ | |
75 | TP_STRUCT__entry( \ | |
76 | __field(int, minor) \ | |
77 | __field(u32, index) \ | |
78 | __field(u32, type) \ | |
79 | __field(u32, bytesused) \ | |
80 | __field(u32, flags) \ | |
81 | __field(u32, field) \ | |
82 | __field(s64, timestamp) \ | |
83 | __field(u32, timecode_type) \ | |
84 | __field(u32, timecode_flags) \ | |
85 | __field(u8, timecode_frames) \ | |
86 | __field(u8, timecode_seconds) \ | |
87 | __field(u8, timecode_minutes) \ | |
88 | __field(u8, timecode_hours) \ | |
89 | __field(u8, timecode_userbits0) \ | |
90 | __field(u8, timecode_userbits1) \ | |
91 | __field(u8, timecode_userbits2) \ | |
92 | __field(u8, timecode_userbits3) \ | |
93 | __field(u32, sequence) \ | |
94 | ), \ | |
95 | \ | |
96 | TP_fast_assign( \ | |
97 | tp_assign(minor, minor); \ | |
98 | tp_assign(index, buf->index); \ | |
99 | tp_assign(type, buf->type); \ | |
100 | tp_assign(bytesused, buf->bytesused); \ | |
101 | tp_assign(flags, buf->flags); \ | |
102 | tp_assign(field, buf->field); \ | |
103 | tp_assign(timestamp, \ | |
104 | timeval_to_ns(&buf->timestamp)); \ | |
105 | tp_assign(timecode_type, buf->timecode.type); \ | |
106 | tp_assign(timecode_flags, buf->timecode.flags); \ | |
107 | tp_assign(timecode_frames, \ | |
108 | buf->timecode.frames); \ | |
109 | tp_assign(timecode_seconds, \ | |
110 | buf->timecode.seconds); \ | |
111 | tp_assign(timecode_minutes, \ | |
112 | buf->timecode.minutes); \ | |
113 | tp_assign(timecode_hours, buf->timecode.hours); \ | |
114 | tp_assign(timecode_userbits0, \ | |
115 | buf->timecode.userbits[0]); \ | |
116 | tp_assign(timecode_userbits1, \ | |
117 | buf->timecode.userbits[1]); \ | |
118 | tp_assign(timecode_userbits2, \ | |
119 | buf->timecode.userbits[2]); \ | |
120 | tp_assign(timecode_userbits3, \ | |
121 | buf->timecode.userbits[3]); \ | |
122 | tp_assign(sequence, buf->sequence); \ | |
123 | ), \ | |
124 | \ | |
125 | TP_printk("minor = %d, index = %u, type = %s, " \ | |
126 | "bytesused = %u, flags = %s, " \ | |
127 | "field = %s, timestamp = %llu, timecode = { " \ | |
128 | "type = %s, flags = %s, frames = %u, " \ | |
129 | "seconds = %u, minutes = %u, hours = %u, " \ | |
130 | "userbits = { %u %u %u %u } }, " \ | |
131 | "sequence = %u", __entry->minor, \ | |
132 | __entry->index, show_type(__entry->type), \ | |
133 | __entry->bytesused, \ | |
134 | show_flags(__entry->flags), \ | |
135 | show_field(__entry->field), \ | |
136 | __entry->timestamp, \ | |
137 | show_timecode_type(__entry->timecode_type), \ | |
138 | show_timecode_flags(__entry->timecode_flags), \ | |
139 | __entry->timecode_frames, \ | |
140 | __entry->timecode_seconds, \ | |
141 | __entry->timecode_minutes, \ | |
142 | __entry->timecode_hours, \ | |
143 | __entry->timecode_userbits0, \ | |
144 | __entry->timecode_userbits1, \ | |
145 | __entry->timecode_userbits2, \ | |
146 | __entry->timecode_userbits3, \ | |
147 | __entry->sequence \ | |
148 | ) \ | |
149 | ) | |
150 | ||
151 | LTTNG_V4L2_TRACE_EVENT(v4l2_dqbuf) | |
152 | LTTNG_V4L2_TRACE_EVENT(v4l2_qbuf) | |
153 | ||
154 | #endif /* if !defined(_TRACE_V4L2_H) || defined(TRACE_HEADER_MULTI_READ) */ | |
155 | ||
156 | /* This part must be outside protection */ | |
157 | #include "../../../probes/define_trace.h" |