2 id: lttng-modules-tp-fields
5 Previous versions used the TP_STRUCT__entry() and TP_fast_assign()
6 macros which also used different inner macros. The new ctf_*()
7 macros are similar to their LTTng-UST counterpart.
10 <a name="doc-lttng-modules-tp-fast-assign"></a>
11 <a name="doc-lttng-modules-tp-struct-entry"></a>
12 The available macros to define tracepoint fields, which should be listed
13 within `TP_FIELDS()` in `LTTNG_TRACEPOINT_EVENT()`, are:
16 <table class="func-desc">
20 <th>Description/arguments</th>
27 <li><code class="no-bg">ctf_integer(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
28 <li><code class="no-bg">ctf_integer_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
29 <li><code class="no-bg">ctf_user_integer(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
30 <li><code class="no-bg">ctf_user_integer_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
34 <p>Standard integer, displayed in base 10</p>
37 <code class="arg"><strong>t</strong></code> integer C type
38 (<code>int</code>, <code>long</code>,
39 <code>size_t</code>, ...)
41 <li><code class="arg"><strong>n</strong></code> field name</li>
42 <li><code class="arg"><strong>e</strong></code> argument expression</li>
49 <li><code class="no-bg">ctf_integer_hex(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
50 <li><code class="no-bg">ctf_user_integer_hex(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
54 <p>Standard integer, displayed in base 16</p>
56 <li><code class="arg"><strong>t</strong></code> integer C type</li>
57 <li><code class="arg">n</code> field name</li>
58 <li><code class="arg">e</code> argument expression</li>
63 <td><code class="no-bg">ctf_integer_oct(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></td>
65 <p>Standard integer, displayed in base 8</p>
67 <li><code class="arg"><strong>t</strong></code> integer C type</li>
68 <li><code class="arg">n</code> field name</li>
69 <li><code class="arg">e</code> argument expression</li>
76 <li><code class="no-bg">ctf_integer_network(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
77 <li><code class="no-bg">ctf_user_integer_network(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
82 Integer in network byte order (big-endian),
83 displayed in base 10
86 <li><code class="arg">t</code> integer C type</li>
87 <li><code class="arg">n</code> field name</li>
88 <li><code class="arg">e</code> argument expression</li>
95 <li><code class="no-bg">ctf_integer_network_hex(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
96 <li><code class="no-bg">ctf_user_integer_network_hex(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
101 Integer in network byte order, displayed
104 <li><code class="arg">t</code> integer C type</li>
105 <li><code class="arg">n</code> field name</li>
106 <li><code class="arg">e</code> argument expression</li>
113 <li><code class="no-bg">ctf_float(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
114 <li><code class="no-bg">ctf_user_float(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
115 <li><code class="no-bg">ctf_float_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
116 <li><code class="no-bg">ctf_user_float_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>)</code></li>
120 <p>Floating point number</p>
123 <code class="arg">t</code> floating point number
124 C type (<code>float</code>, <code>double</code>)
126 <li><code class="arg">n</code> field name</li>
127 <li><code class="arg">e</code> argument expression</li>
134 <li><code class="no-bg">ctf_string(<span class="arg">n</span>, <span class="arg">e</span>)</code></li>
135 <li><code class="no-bg">ctf_user_string(<span class="arg">n</span>, <span class="arg">e</span>)</code></li>
136 <li><code class="no-bg">ctf_string_nowrite(<span class="arg">n</span>, <span class="arg">e</span>)</code></li>
137 <li><code class="no-bg">ctf_user_string_nowrite(<span class="arg">n</span>, <span class="arg">e</span>)</code></li>
142 Null-terminated string; undefined behavior if
143 <code class="arg">e</code> is <code>NULL</code>
146 <li><code class="arg">n</code> field name</li>
147 <li><code class="arg">e</code> argument expression</li>
154 <li><code class="no-bg">ctf_array(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
155 <li><code class="no-bg">ctf_user_array(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
156 <li><code class="no-bg">ctf_array_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
157 <li><code class="no-bg">ctf_user_array_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
162 Statically-sized array of integers, displayed in
166 <li><code class="arg">t</code> array element C type</li>
167 <li><code class="arg">n</code> field name</li>
168 <li><code class="arg">e</code> argument expression</li>
169 <li><code class="arg">s</code> number of elements</li>
176 <li><code class="no-bg">ctf_array_text(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
177 <li><code class="no-bg">ctf_user_array_text(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
178 <li><code class="no-bg">ctf_array_text_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
179 <li><code class="no-bg">ctf_user_array_text_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">s</span>)</code></li>
184 Statically-sized array, printed as text; no need to
188 <li><code class="arg">t</code> array element C type (always <code>char</code>)</li>
189 <li><code class="arg">n</code> field name</li>
190 <li><code class="arg">e</code> argument expression</li>
191 <li><code class="arg">s</code> number of elements</li>
198 <li><code class="no-bg">ctf_sequence(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
199 <li><code class="no-bg">ctf_user_sequence(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
200 <li><code class="no-bg">ctf_sequence_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
201 <li><code class="no-bg">ctf_user_sequence_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
206 Dynamically-sized array of integers, displayed in
207 base 10; type of
208 <code class="arg">E</code> needs to be unsigned
211 <li><code class="arg">t</code> sequence element C type</li>
212 <li><code class="arg">n</code> field name</li>
213 <li><code class="arg">e</code> argument expression</li>
214 <li><code class="arg">T</code> length expression C type</li>
215 <li><code class="arg">E</code> length expression</li>
222 <li><code class="no-bg">ctf_sequence_hex(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
227 Dynamically-sized array of integers, displayed in
228 base 16; type of
229 <code class="arg">E</code> needs to be unsigned
232 <li><code class="arg">t</code> sequence element C type</li>
233 <li><code class="arg">n</code> field name</li>
234 <li><code class="arg">e</code> argument expression</li>
235 <li><code class="arg">T</code> length expression C type</li>
236 <li><code class="arg">E</code> length expression</li>
243 <li><code class="no-bg">ctf_sequence_network(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
248 Dynamically-sized array of integers in network byte
249 order (big endian), displayed in base 10;
254 <code class="arg">E</code> needs to be unsigned
257 <li><code class="arg">t</code> sequence element C type</li>
258 <li><code class="arg">n</code> field name</li>
259 <li><code class="arg">e</code> argument expression</li>
260 <li><code class="arg">T</code> length expression C type</li>
261 <li><code class="arg">E</code> length expression</li>
268 <li><code class="no-bg">ctf_sequence_text(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
269 <li><code class="no-bg">ctf_user_sequence_text(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
270 <li><code class="no-bg">ctf_sequence_text_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
271 <li><code class="no-bg">ctf_user_sequence_text_nowrite(<span class="arg">t</span>, <span class="arg">n</span>, <span class="arg">e</span>, <span class="arg">T</span>, <span class="arg">E</span>)</code></li>
276 Dynamically-sized array, displayed as text; no need to
277 be null-terminated; undefined behavior if
278 <code class="arg">e</code> is <code>NULL</code></p>
280 <li><code class="arg">t</code> sequence element C type (always <code>char</code>)</li>
281 <li><code class="arg">n</code> field name</li>
282 <li><code class="arg">e</code> argument expression</li>
283 <li><code class="arg">T</code> length expression C type</li>
284 <li><code class="arg">E</code> length expression</li>
292 The `_user` versions must be used when the argument expression, `e`, is
293 a user space address. In the cases of `ctf_user_integer*()` and
294 `ctf_user_float*()`, `&e` must be a user space address, thus `e` must
297 The `_nowrite` versions omit themselves from the session trace, but are
298 otherwise identical. This means the `_nowrite` fields won't be written
299 in the recorded trace. Their primary purpose is to make some
300 of the event context available to the
301 [event filters](#doc-enabling-disabling-events) without having to
302 commit the data to sub-buffers.