]>
git.proxmox.com Git - mirror_frr.git/blob - lib/libfrr_trace.h
3 * Copyright (C) 2020 NVIDIA Corporation
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
16 * You should have received a copy of the GNU General Public License along
17 * with this program; see the file COPYING; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 #if !defined(_LIBFRR_TRACE_H_) || defined(TRACEPOINT_HEADER_MULTI_READ)
22 #define _LIBFRR_TRACE_H_
28 #undef TRACEPOINT_PROVIDER
29 #define TRACEPOINT_PROVIDER frr_libfrr
31 #undef TRACEPOINT_INCLUDE
32 #define TRACEPOINT_INCLUDE "./libfrr_trace.h"
34 #include <lttng/tracepoint.h>
42 /* clang-format off */
47 TP_ARGS(struct hash
*, hash
, void *, data
),
49 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
50 ctf_integer(unsigned int, index_size
, hash
->size
)
51 ctf_integer(unsigned long, item_count
, hash
->count
)
52 ctf_integer_hex(intptr_t, data_ptr
, data
)
56 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_get
, TRACE_INFO
)
61 TP_ARGS(struct hash
*, hash
, void *, data
, unsigned int, key
),
63 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
64 ctf_integer(unsigned int, key
, hash
->size
)
65 ctf_integer(unsigned int, index_size
, hash
->size
)
66 ctf_integer(unsigned long, item_count
, hash
->count
)
67 ctf_integer_hex(intptr_t, data_ptr
, data
)
71 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_insert
, TRACE_INFO
)
76 TP_ARGS(struct hash
*, hash
, void *, data
, void *, released_item
),
78 ctf_string(name
, hash
->name
? hash
->name
: "(unnamed)")
79 ctf_integer(unsigned int, index_size
, hash
->size
)
80 ctf_integer(unsigned long, item_count
, hash
->count
)
81 ctf_integer_hex(intptr_t, data_ptr
, data
)
82 ctf_integer_hex(intptr_t, released_item
, data
)
86 TRACEPOINT_LOGLEVEL(frr_libfrr
, hash_release
, TRACE_INFO
)
88 #define THREAD_SCHEDULE_ARGS \
89 TP_ARGS(struct thread_master *, master, const char *, funcname, \
90 const char *, schedfrom, int, fromln, struct thread **, \
91 thread_ptr, int, fd, int, val, void *, arg, long, time)
93 TRACEPOINT_EVENT_CLASS(
98 ctf_string(threadmaster_name
, master
->name
)
99 ctf_string(function_name
, funcname
? funcname
: "(unknown function)")
100 ctf_string(scheduled_from
, schedfrom
? schedfrom
: "(unknown file)")
101 ctf_integer(int, scheduled_on_line
, fromln
)
102 ctf_integer_hex(intptr_t, thread_addr
, thread_ptr
? *thread_ptr
: NULL
)
103 ctf_integer(int, file_descriptor
, fd
)
104 ctf_integer(int, event_value
, val
)
105 ctf_integer_hex(intptr_t, argument_ptr
, arg
)
106 ctf_integer(long, timer
, time
)
110 #define THREAD_OPERATION_TRACEPOINT_INSTANCE(name) \
111 TRACEPOINT_EVENT_INSTANCE(frr_libfrr, thread_operation, name, \
112 THREAD_SCHEDULE_ARGS) \
113 TRACEPOINT_LOGLEVEL(frr_libfrr, name, TRACE_INFO)
115 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_timer
)
116 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_event
)
117 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_read
)
118 THREAD_OPERATION_TRACEPOINT_INSTANCE(schedule_write
)
119 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel
)
120 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_cancel_async
)
121 THREAD_OPERATION_TRACEPOINT_INSTANCE(thread_call
)
130 ctf_string(frr_pthread_name
, name
)
141 ctf_string(frr_pthread_name
, name
)
149 struct memtype
*, mt
, void *, ptr
, size_t, size
152 ctf_string(memtype
, mt
->name
)
153 ctf_integer(size_t, size
, size
)
154 ctf_integer_hex(intptr_t, ptr
, ptr
)
162 struct memtype
*, mt
, void *, ptr
165 ctf_string(memtype
, mt
->name
)
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 *, ptr
190 ctf_integer_hex(intptr_t, list
, list
)
191 ctf_integer(unsigned int, count
, list
->count
)
192 ctf_integer_hex(intptr_t, ptr
, ptr
)
200 struct list
*, list
, const void *, node
203 ctf_integer_hex(intptr_t, list
, list
)
204 ctf_integer(unsigned int, count
, list
->count
)
205 ctf_integer_hex(intptr_t, node
, node
)
216 ctf_integer_hex(intptr_t, list
, list
)
217 ctf_integer(unsigned int, count
, list
->count
)
225 struct route_table
*, table
, char *, prefix
228 ctf_integer_hex(intptr_t, table
, table
)
229 ctf_string(prefix
, prefix
)
233 /* clang-format on */
235 #include <lttng/tracepoint-event.h>
236 #include <lttng/tracelog.h>
238 #endif /* HAVE_LTTNG */
240 #endif /* _LIBFRR_TRACE_H_ */