]>
git.proxmox.com Git - mirror_frr.git/blob - lib/libfrr_trace.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
4 * Copyright (C) 2020 NVIDIA Corporation
8 #if !defined(_LIBFRR_TRACE_H_) || defined(TRACEPOINT_HEADER_MULTI_READ)
9 #define _LIBFRR_TRACE_H_
15 #undef TRACEPOINT_PROVIDER
16 #define TRACEPOINT_PROVIDER frr_libfrr
18 #undef TRACEPOINT_INCLUDE
19 #define TRACEPOINT_INCLUDE "./libfrr_trace.h"
21 #include <lttng/tracepoint.h>
29 /* clang-format off */
34 TP_ARGS(struct hash
*, hash
, void *, data
),
36 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
37 ctf_integer(unsigned int, index_size
, hash
->size
)
38 ctf_integer(unsigned long, item_count
, hash
->count
)
39 ctf_integer_hex(intptr_t, data_ptr
, data
)
43 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_get
, TRACE_INFO
)
48 TP_ARGS(struct hash
*, hash
, void *, data
, unsigned int, key
),
50 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
51 ctf_integer(unsigned int, key
, hash
->size
)
52 ctf_integer(unsigned int, index_size
, hash
->size
)
53 ctf_integer(unsigned long, item_count
, hash
->count
)
54 ctf_integer_hex(intptr_t, data_ptr
, data
)
58 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_insert
, TRACE_INFO
)
63 TP_ARGS(struct hash
*, hash
, void *, data
, void *, released_item
),
65 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
66 ctf_integer(unsigned int, index_size
, hash
->size
)
67 ctf_integer(unsigned long, item_count
, hash
->count
)
68 ctf_integer_hex(intptr_t, data_ptr
, data
)
69 ctf_integer_hex(intptr_t, released_item
, data
)
73 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_release
, TRACE_INFO
)
75 #define THREAD_SCHEDULE_ARGS \
76 TP_ARGS(struct thread_master *, master, const char *, funcname, \
77 const char *, schedfrom, int, fromln, struct thread **, \
78 thread_ptr, int, fd, int, val, void *, arg, long, time)
80 TRACEPOINT_EVENT_CLASS(
85 ctf_string(threadmaster_name
, master
->name
)
86 ctf_string(function_name
, funcname
? funcname
: "(unknown function)")
87 ctf_string(scheduled_from
, schedfrom
? schedfrom
: "(unknown file)")
88 ctf_integer(int, scheduled_on_line
, fromln
)
89 ctf_integer_hex(intptr_t, thread_addr
, thread_ptr
? *thread_ptr
: NULL
)
90 ctf_integer(int, file_descriptor
, fd
)
91 ctf_integer(int, event_value
, val
)
92 ctf_integer_hex(intptr_t, argument_ptr
, arg
)
93 ctf_integer(long, timer
, time
)
97 #define THREAD_OPERATION_TRACEPOINT_INSTANCE(name) \
98 TRACEPOINT_EVENT_INSTANCE(frr_libfrr, thread_operation, name, \
99 THREAD_SCHEDULE_ARGS) \
100 TRACEPOINT_LOGLEVEL(frr_libfrr, name, TRACE_INFO)
102 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_timer
)
103 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_event
)
104 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_read
)
105 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_write
)
106 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel
)
107 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel_async
)
108 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_call
)
117 ctf_string(frr_pthread_name
, name
)
128 ctf_string(frr_pthread_name
, name
)
136 struct memtype
*, mt
, void *, ptr
, size_t, size
139 ctf_string(memtype
, mt
->name
)
140 ctf_integer(size_t, size
, size
)
141 ctf_integer_hex(intptr_t, ptr
, ptr
)
149 struct memtype
*, mt
, void *, ptr
152 ctf_string(memtype
, mt
->name
)
153 ctf_integer_hex(intptr_t, ptr
, ptr
)
161 struct list
*, list
, const void *, ptr
164 ctf_integer_hex(intptr_t, list
, list
)
165 ctf_integer(unsigned int, count
, list
->count
)
166 ctf_integer_hex(intptr_t, ptr
, ptr
)
174 struct list
*, list
, const void *, ptr
177 ctf_integer_hex(intptr_t, list
, list
)
178 ctf_integer(unsigned int, count
, list
->count
)
179 ctf_integer_hex(intptr_t, ptr
, ptr
)
187 struct list
*, list
, const void *, node
190 ctf_integer_hex(intptr_t, list
, list
)
191 ctf_integer(unsigned int, count
, list
->count
)
192 ctf_integer_hex(intptr_t, node
, node
)
203 ctf_integer_hex(intptr_t, list
, list
)
204 ctf_integer(unsigned int, count
, list
->count
)
212 struct route_table
*, table
, char *, prefix
215 ctf_integer_hex(intptr_t, table
, table
)
216 ctf_string(prefix
, prefix
)
220 /* clang-format on */
222 #include <lttng/tracepoint-event.h>
223 #include <lttng/tracelog.h>
225 #endif /* HAVE_LTTNG */
227 #endif /* _LIBFRR_TRACE_H_ */