1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM handshake
5 #if !defined(_TRACE_HANDSHAKE_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define _TRACE_HANDSHAKE_H
9 #include <linux/tracepoint.h>
11 DECLARE_EVENT_CLASS(handshake_event_class,
13 const struct net *net,
14 const struct handshake_req *req,
17 TP_ARGS(net, req, sk),
19 __field(const void *, req)
20 __field(const void *, sk)
21 __field(unsigned int, netns_ino)
26 __entry->netns_ino = net->ns.inum;
28 TP_printk("req=%p sk=%p",
29 __entry->req, __entry->sk
32 #define DEFINE_HANDSHAKE_EVENT(name) \
33 DEFINE_EVENT(handshake_event_class, name, \
35 const struct net *net, \
36 const struct handshake_req *req, \
37 const struct sock *sk \
39 TP_ARGS(net, req, sk))
41 DECLARE_EVENT_CLASS(handshake_fd_class,
43 const struct net *net,
44 const struct handshake_req *req,
45 const struct sock *sk,
48 TP_ARGS(net, req, sk, fd),
50 __field(const void *, req)
51 __field(const void *, sk)
53 __field(unsigned int, netns_ino)
57 __entry->sk = req->hr_sk;
59 __entry->netns_ino = net->ns.inum;
61 TP_printk("req=%p sk=%p fd=%d",
62 __entry->req, __entry->sk, __entry->fd
65 #define DEFINE_HANDSHAKE_FD_EVENT(name) \
66 DEFINE_EVENT(handshake_fd_class, name, \
68 const struct net *net, \
69 const struct handshake_req *req, \
70 const struct sock *sk, \
73 TP_ARGS(net, req, sk, fd))
75 DECLARE_EVENT_CLASS(handshake_error_class,
77 const struct net *net,
78 const struct handshake_req *req,
79 const struct sock *sk,
82 TP_ARGS(net, req, sk, err),
84 __field(const void *, req)
85 __field(const void *, sk)
87 __field(unsigned int, netns_ino)
93 __entry->netns_ino = net->ns.inum;
95 TP_printk("req=%p sk=%p err=%d",
96 __entry->req, __entry->sk, __entry->err
99 #define DEFINE_HANDSHAKE_ERROR(name) \
100 DEFINE_EVENT(handshake_error_class, name, \
102 const struct net *net, \
103 const struct handshake_req *req, \
104 const struct sock *sk, \
107 TP_ARGS(net, req, sk, err))
111 * Request lifetime events
114 DEFINE_HANDSHAKE_EVENT(handshake_submit);
115 DEFINE_HANDSHAKE_ERROR(handshake_submit_err);
116 DEFINE_HANDSHAKE_EVENT(handshake_cancel);
117 DEFINE_HANDSHAKE_EVENT(handshake_cancel_none);
118 DEFINE_HANDSHAKE_EVENT(handshake_cancel_busy);
119 DEFINE_HANDSHAKE_EVENT(handshake_destruct);
122 TRACE_EVENT(handshake_complete,
124 const struct net *net,
125 const struct handshake_req *req,
126 const struct sock *sk,
129 TP_ARGS(net, req, sk, status),
131 __field(const void *, req)
132 __field(const void *, sk)
134 __field(unsigned int, netns_ino)
139 __entry->status = status;
140 __entry->netns_ino = net->ns.inum;
142 TP_printk("req=%p sk=%p status=%d",
143 __entry->req, __entry->sk, __entry->status
151 DEFINE_HANDSHAKE_ERROR(handshake_notify_err);
152 DEFINE_HANDSHAKE_FD_EVENT(handshake_cmd_accept);
153 DEFINE_HANDSHAKE_ERROR(handshake_cmd_accept_err);
154 DEFINE_HANDSHAKE_FD_EVENT(handshake_cmd_done);
155 DEFINE_HANDSHAKE_ERROR(handshake_cmd_done_err);
157 #endif /* _TRACE_HANDSHAKE_H */
159 #include <trace/define_trace.h>