1 // SPDX-FileCopyrightText: 2012 Andrew Gabbasov <andrew_gabbasov@mentor.com>
3 // SPDX-License-Identifier: GPL-2.0-only
6 #define TRACE_SYSTEM random
8 #if !defined(LTTNG_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ)
9 #define LTTNG_TRACE_RANDOM_H
11 #include <lttng/tracepoint-event.h>
12 #include <linux/writeback.h>
14 LTTNG_TRACEPOINT_EVENT_MAP(add_device_randomness
,
16 random_add_device_randomness
,
18 TP_PROTO(int bytes
, unsigned long IP
),
23 ctf_integer(int, bytes
, bytes
)
24 ctf_integer_hex(unsigned long, IP
, IP
)
28 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
29 LTTNG_TRACEPOINT_EVENT_CLASS(random__mix_pool_bytes
,
30 TP_PROTO(int bytes
, unsigned long IP
),
35 ctf_integer(int, bytes
, bytes
)
36 ctf_integer_hex(unsigned long, IP
, IP
)
40 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__mix_pool_bytes
, mix_pool_bytes
,
42 random_mix_pool_bytes
,
44 TP_PROTO(int bytes
, unsigned long IP
),
49 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__mix_pool_bytes
, mix_pool_bytes_nolock
,
51 random_mix_pool_bytes_nolock
,
53 TP_PROTO(int bytes
, unsigned long IP
),
58 LTTNG_TRACEPOINT_EVENT_CLASS(random__mix_pool_bytes
,
59 TP_PROTO(const char *pool_name
, int bytes
, unsigned long IP
),
61 TP_ARGS(pool_name
, bytes
, IP
),
64 ctf_string(pool_name
, pool_name
)
65 ctf_integer(int, bytes
, bytes
)
66 ctf_integer_hex(unsigned long, IP
, IP
)
70 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__mix_pool_bytes
, mix_pool_bytes
,
72 random_mix_pool_bytes
,
74 TP_PROTO(const char *pool_name
, int bytes
, unsigned long IP
),
76 TP_ARGS(pool_name
, bytes
, IP
)
79 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__mix_pool_bytes
, mix_pool_bytes_nolock
,
81 random_mix_pool_bytes_nolock
,
83 TP_PROTO(const char *pool_name
, int bytes
, unsigned long IP
),
85 TP_ARGS(pool_name
, bytes
, IP
)
89 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
90 LTTNG_TRACEPOINT_EVENT_MAP(credit_entropy_bits
,
92 random_credit_entropy_bits
,
94 TP_PROTO(int bits
, int entropy_count
, unsigned long IP
),
96 TP_ARGS(bits
, entropy_count
, IP
),
99 ctf_integer(int, bits
, bits
)
100 ctf_integer(int, entropy_count
, entropy_count
)
101 ctf_integer_hex(unsigned long, IP
, IP
)
104 #elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,2,0))
105 LTTNG_TRACEPOINT_EVENT_MAP(credit_entropy_bits
,
107 random_credit_entropy_bits
,
109 TP_PROTO(const char *pool_name
, int bits
, int entropy_count
,
112 TP_ARGS(pool_name
, bits
, entropy_count
, IP
),
115 ctf_string(pool_name
, pool_name
)
116 ctf_integer(int, bits
, bits
)
117 ctf_integer(int, entropy_count
, entropy_count
)
118 ctf_integer_hex(unsigned long, IP
, IP
)
122 LTTNG_TRACEPOINT_EVENT_MAP(credit_entropy_bits
,
124 random_credit_entropy_bits
,
126 TP_PROTO(const char *pool_name
, int bits
, int entropy_count
,
127 int entropy_total
, unsigned long IP
),
129 TP_ARGS(pool_name
, bits
, entropy_count
, entropy_total
, IP
),
132 ctf_string(pool_name
, pool_name
)
133 ctf_integer(int, bits
, bits
)
134 ctf_integer(int, entropy_count
, entropy_count
)
135 ctf_integer(int, entropy_total
, entropy_total
)
136 ctf_integer_hex(unsigned long, IP
, IP
)
141 LTTNG_TRACEPOINT_EVENT_MAP(push_to_pool
,
145 TP_PROTO(const char *pool_name
, int pool_bits
, int input_bits
),
147 TP_ARGS(pool_name
, pool_bits
, input_bits
),
150 ctf_string(pool_name
, pool_name
)
151 ctf_integer(int, pool_bits
, pool_bits
)
152 ctf_integer(int, input_bits
, input_bits
)
156 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
157 LTTNG_TRACEPOINT_EVENT_MAP(debit_entropy
,
159 random_debit_entropy
,
161 TP_PROTO(int debit_bits
),
166 ctf_integer(int, debit_bits
, debit_bits
)
170 LTTNG_TRACEPOINT_EVENT_MAP(debit_entropy
,
172 random_debit_entropy
,
174 TP_PROTO(const char *pool_name
, int debit_bits
),
176 TP_ARGS(pool_name
, debit_bits
),
179 ctf_string(pool_name
, pool_name
)
180 ctf_integer(int, debit_bits
, debit_bits
)
185 LTTNG_TRACEPOINT_EVENT_MAP(add_input_randomness
,
187 random_add_input_randomness
,
189 TP_PROTO(int input_bits
),
194 ctf_integer(int, input_bits
, input_bits
)
198 LTTNG_TRACEPOINT_EVENT_MAP(add_disk_randomness
,
200 random_add_disk_randomness
,
202 TP_PROTO(dev_t dev
, int input_bits
),
204 TP_ARGS(dev
, input_bits
),
207 ctf_integer(dev_t
, dev
, dev
)
208 ctf_integer(int, input_bits
, input_bits
)
212 LTTNG_TRACEPOINT_EVENT_MAP(xfer_secondary_pool
,
214 random_xfer_secondary_pool
,
216 TP_PROTO(const char *pool_name
, int xfer_bits
, int request_bits
,
217 int pool_entropy
, int input_entropy
),
219 TP_ARGS(pool_name
, xfer_bits
, request_bits
, pool_entropy
,
223 ctf_string(pool_name
, pool_name
)
224 ctf_integer(int, xfer_bits
, xfer_bits
)
225 ctf_integer(int, request_bits
, request_bits
)
226 ctf_integer(int, pool_entropy
, pool_entropy
)
227 ctf_integer(int, input_entropy
, input_entropy
)
231 LTTNG_TRACEPOINT_EVENT_CLASS(random__get_random_bytes
,
233 TP_PROTO(int nbytes
, unsigned long IP
),
238 ctf_integer(int, nbytes
, nbytes
)
239 ctf_integer_hex(unsigned long, IP
, IP
)
243 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__get_random_bytes
, get_random_bytes
,
245 random_get_random_bytes
,
247 TP_PROTO(int nbytes
, unsigned long IP
),
252 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__get_random_bytes
, get_random_bytes_arch
,
254 random_get_random_bytes_arch
,
256 TP_PROTO(int nbytes
, unsigned long IP
),
261 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,17,0))
262 LTTNG_TRACEPOINT_EVENT_CLASS(random__extract_entropy
,
263 TP_PROTO(int nbytes
, int entropy_count
, unsigned long IP
),
265 TP_ARGS(nbytes
, entropy_count
, IP
),
268 ctf_integer(int, nbytes
, nbytes
)
269 ctf_integer(int, entropy_count
, entropy_count
)
270 ctf_integer_hex(unsigned long, IP
, IP
)
275 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__extract_entropy
, extract_entropy
,
277 random_extract_entropy
,
279 TP_PROTO(int nbytes
, int entropy_count
, unsigned long IP
),
281 TP_ARGS(nbytes
, entropy_count
, IP
)
284 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__extract_entropy
, extract_entropy_user
,
286 random_extract_entropy_user
,
288 TP_PROTO(int nbytes
, int entropy_count
, unsigned long IP
),
290 TP_ARGS(nbytes
, entropy_count
, IP
)
293 LTTNG_TRACEPOINT_EVENT_CLASS(random__extract_entropy
,
294 TP_PROTO(const char *pool_name
, int nbytes
, int entropy_count
,
297 TP_ARGS(pool_name
, nbytes
, entropy_count
, IP
),
300 ctf_string(pool_name
, pool_name
)
301 ctf_integer(int, nbytes
, nbytes
)
302 ctf_integer(int, entropy_count
, entropy_count
)
303 ctf_integer_hex(unsigned long, IP
, IP
)
308 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__extract_entropy
, extract_entropy
,
310 random_extract_entropy
,
312 TP_PROTO(const char *pool_name
, int nbytes
, int entropy_count
,
315 TP_ARGS(pool_name
, nbytes
, entropy_count
, IP
)
318 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(random__extract_entropy
, extract_entropy_user
,
320 random_extract_entropy_user
,
322 TP_PROTO(const char *pool_name
, int nbytes
, int entropy_count
,
325 TP_ARGS(pool_name
, nbytes
, entropy_count
, IP
)
329 LTTNG_TRACEPOINT_EVENT_MAP(random_read
,
333 TP_PROTO(int got_bits
, int need_bits
, int pool_left
, int input_left
),
335 TP_ARGS(got_bits
, need_bits
, pool_left
, input_left
),
338 ctf_integer(int, got_bits
, got_bits
)
339 ctf_integer(int, need_bits
, need_bits
)
340 ctf_integer(int, pool_left
, pool_left
)
341 ctf_integer(int, input_left
, input_left
)
345 LTTNG_TRACEPOINT_EVENT_MAP(urandom_read
,
349 TP_PROTO(int got_bits
, int pool_left
, int input_left
),
351 TP_ARGS(got_bits
, pool_left
, input_left
),
354 ctf_integer(int, got_bits
, got_bits
)
355 ctf_integer(int, pool_left
, pool_left
)
356 ctf_integer(int, input_left
, input_left
)
360 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,9,0))
361 LTTNG_TRACEPOINT_EVENT_MAP(prandom_u32
,
365 TP_PROTO(unsigned int ret
),
370 ctf_integer(unsigned int, ret
, ret
)
376 #endif /* LTTNG_TRACE_RANDOM_H */
378 /* This part must be outside protection */
379 #include <lttng/define_trace.h>