2 #define TRACE_SYSTEM lttng_statedump
4 #if !defined(_TRACE_LTTNG_STATEDUMP_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_LTTNG_STATEDUMP_H
7 #include <linux/tracepoint.h>
8 #include <linux/nsproxy.h>
9 #include <linux/pid_namespace.h>
10 #include <linux/types.h>
12 TRACE_EVENT(lttng_statedump_start
,
13 TP_PROTO(struct lttng_session
*session
),
22 TRACE_EVENT(lttng_statedump_end
,
23 TP_PROTO(struct lttng_session
*session
),
32 TRACE_EVENT(lttng_statedump_process_state
,
33 TP_PROTO(struct lttng_session
*session
,
34 struct task_struct
*p
,
35 int type
, int mode
, int submode
, int status
,
36 struct pid_namespace
*pid_ns
),
37 TP_ARGS(session
, p
, type
, mode
, submode
, status
, pid_ns
),
45 __array_text(char, name
, TASK_COMM_LEN
)
50 __field(int, ns_level
)
53 tp_assign(tid
, p
->pid
)
54 tp_assign(vtid
, pid_ns
? task_pid_nr_ns(p
, pid_ns
) : 0)
55 tp_assign(pid
, p
->tgid
)
56 tp_assign(vpid
, pid_ns
? task_tgid_nr_ns(p
, pid_ns
) : 0)
62 ret
= task_tgid_nr(p
->real_parent
);
68 struct task_struct
*parent
;
73 parent
= rcu_dereference(p
->real_parent
);
74 ret
= task_tgid_nr_ns(parent
, pid_ns
);
79 tp_memcpy(name
, p
->comm
, TASK_COMM_LEN
)
82 tp_assign(submode
, submode
)
83 tp_assign(status
, status
)
84 tp_assign(ns_level
, pid_ns
? pid_ns
->level
: 0)
89 TRACE_EVENT(lttng_statedump_file_descriptor
,
90 TP_PROTO(struct lttng_session
*session
,
91 struct task_struct
*p
, int fd
, const char *filename
,
92 unsigned int flags
, fmode_t fmode
),
93 TP_ARGS(session
, p
, fd
, filename
, flags
, fmode
),
97 __field_oct(unsigned int, flags
)
98 __field_hex(fmode_t
, fmode
)
99 __string(filename
, filename
)
102 tp_assign(pid
, p
->tgid
)
104 tp_assign(flags
, flags
)
105 tp_assign(fmode
, fmode
)
106 tp_strcpy(filename
, filename
)
111 TRACE_EVENT(lttng_statedump_vm_map
,
112 TP_PROTO(struct lttng_session
*session
,
113 struct task_struct
*p
, struct vm_area_struct
*map
,
114 unsigned long inode
),
115 TP_ARGS(session
, p
, map
, inode
),
118 __field_hex(unsigned long, start
)
119 __field_hex(unsigned long, end
)
120 __field_hex(unsigned long, flags
)
121 __field(unsigned long, inode
)
122 __field(unsigned long, pgoff
)
125 tp_assign(pid
, p
->tgid
)
126 tp_assign(start
, map
->vm_start
)
127 tp_assign(end
, map
->vm_end
)
128 tp_assign(flags
, map
->vm_flags
)
129 tp_assign(inode
, inode
)
130 tp_assign(pgoff
, map
->vm_pgoff
<< PAGE_SHIFT
)
135 TRACE_EVENT(lttng_statedump_network_interface
,
136 TP_PROTO(struct lttng_session
*session
,
137 struct net_device
*dev
, struct in_ifaddr
*ifa
),
138 TP_ARGS(session
, dev
, ifa
),
140 __string(name
, dev
->name
)
141 __field_network_hex(uint32_t, address_ipv4
)
144 tp_strcpy(name
, dev
->name
)
145 tp_assign(address_ipv4
, ifa
? ifa
->ifa_address
: 0U)
150 TRACE_EVENT(lttng_statedump_block_device
,
151 TP_PROTO(struct lttng_session
*session
,
152 dev_t dev
, const char *diskname
),
153 TP_ARGS(session
, dev
, diskname
),
156 __string(diskname
, diskname
)
160 tp_strcpy(diskname
, diskname
)
165 /* Called with desc->lock held */
166 TRACE_EVENT(lttng_statedump_interrupt
,
167 TP_PROTO(struct lttng_session
*session
,
168 unsigned int irq
, const char *chip_name
,
169 struct irqaction
*action
),
170 TP_ARGS(session
, irq
, chip_name
, action
),
172 __field(unsigned int, irq
)
173 __string(name
, chip_name
)
174 __string(action
, action
->name
? : "")
178 tp_strcpy(name
, chip_name
)
179 tp_strcpy(action
, action
->name
? : "")
184 #endif /* _TRACE_LTTNG_STATEDUMP_H */
186 /* This part must be outside protection */
187 #include "../../../probes/define_trace.h"