Implement state dump
[lttng-modules.git] / instrumentation / events / lttng-module / lttng-statedump.h
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM lttng_statedump
3
4 #if !defined(_TRACE_LTTNG_STATEDUMP_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_LTTNG_STATEDUMP_H
6
7 #include <linux/tracepoint.h>
8 #include <linux/netlink.h>
9 #include <linux/inet.h>
10 #include <linux/ip.h>
11 #include <linux/netdevice.h>
12 #include <linux/inetdevice.h>
13
14 TRACE_EVENT(lttng_statedump_start,
15 TP_PROTO(struct lttng_session *session),
16 TP_ARGS(session),
17 TP_STRUCT__entry(
18 ),
19 TP_fast_assign(
20 ),
21 TP_printk("")
22 )
23
24 TRACE_EVENT(lttng_statedump_end,
25 TP_PROTO(struct lttng_session *session),
26 TP_ARGS(session),
27 TP_STRUCT__entry(
28 ),
29 TP_fast_assign(
30 ),
31 TP_printk("")
32 )
33
34 TRACE_EVENT(lttng_statedump_process_state,
35 TP_PROTO(struct lttng_session *session,
36 struct task_struct *p,
37 int type, int mode, int submode, int status),
38 TP_ARGS(session, p, type, mode, submode, status),
39 TP_STRUCT__entry(
40 __field(pid_t, tid)
41 __field(pid_t, vtid)
42 __field(pid_t, pid)
43 __field(pid_t, vpid)
44 __field(pid_t, ppid)
45 __field(pid_t, vppid)
46 __array_text(char, name, TASK_COMM_LEN)
47 __field(int, type)
48 __field(int, mode)
49 __field(int, submode)
50 __field(int, status)
51 ),
52 TP_fast_assign(
53 tp_assign(tid, p->pid)
54 tp_assign(vtid, !p->nsproxy ? 0 : task_pid_vnr(p))
55 tp_assign(pid, p->tgid)
56 tp_assign(vpid, !p->nsproxy ? 0 : task_tgid_vnr(p))
57 tp_assign(ppid,
58 ({
59 pid_t ret;
60
61 rcu_read_lock();
62 ret = task_tgid_nr(p->real_parent);
63 rcu_read_unlock();
64 ret;
65 }))
66 tp_assign(vppid,
67 ({
68 struct task_struct *parent;
69 pid_t ret;
70
71 rcu_read_lock();
72 parent = rcu_dereference(current->real_parent);
73 if (!parent->nsproxy)
74 ret = 0;
75 else
76 ret = task_tgid_nr(parent);
77 rcu_read_unlock();
78 ret;
79 }))
80 tp_memcpy(name, p->comm, TASK_COMM_LEN)
81 tp_assign(type, type)
82 tp_assign(mode, mode)
83 tp_assign(submode, submode)
84 tp_assign(status, status)
85 ),
86 TP_printk("")
87 )
88
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 TP_ARGS(session, p, fd, filename),
93 TP_STRUCT__entry(
94 __field(pid_t, pid)
95 __field(int, fd)
96 __string(filename, filename)
97 ),
98 TP_fast_assign(
99 tp_assign(pid, p->tgid)
100 tp_assign(fd, p->tgid)
101 tp_strcpy(filename, filename)
102 ),
103 TP_printk("")
104 )
105
106 TRACE_EVENT(lttng_statedump_vm_map,
107 TP_PROTO(struct lttng_session *session,
108 struct task_struct *p, struct vm_area_struct *map,
109 unsigned long inode),
110 TP_ARGS(session, p, map, inode),
111 TP_STRUCT__entry(
112 __field(pid_t, pid)
113 __field_hex(unsigned long, start)
114 __field_hex(unsigned long, end)
115 __field_hex(unsigned long, flags)
116 __field(unsigned long, inode)
117 __field(unsigned long, pgoff)
118 ),
119 TP_fast_assign(
120 tp_assign(pid, p->tgid)
121 tp_assign(start, map->vm_start)
122 tp_assign(end, map->vm_end)
123 tp_assign(flags, map->vm_flags)
124 tp_assign(inode, inode)
125 tp_assign(pgoff, map->vm_pgoff << PAGE_SHIFT)
126 ),
127 TP_printk("")
128 )
129
130 TRACE_EVENT(lttng_statedump_network_interface,
131 TP_PROTO(struct lttng_session *session,
132 struct net_device *dev, struct in_ifaddr *ifa),
133 TP_ARGS(session, dev, ifa),
134 TP_STRUCT__entry(
135 __string(name, dev->name)
136 __field_network_hex(uint32_t, address_ipv4)
137 ),
138 TP_fast_assign(
139 tp_strcpy(name, dev->name)
140 tp_assign(address_ipv4, ifa ? ifa->ifa_address : 0U)
141 ),
142 TP_printk("")
143 )
144
145 /* Called with desc->lock held */
146 TRACE_EVENT(lttng_statedump_interrupt,
147 TP_PROTO(struct lttng_session *session,
148 unsigned int irq, const char *chip_name,
149 struct irqaction *action),
150 TP_ARGS(session, irq, chip_name, action),
151 TP_STRUCT__entry(
152 __field(unsigned int, irq)
153 __string(name, chip_name)
154 __string(action, action->name)
155 ),
156 TP_fast_assign(
157 tp_assign(irq, irq)
158 tp_strcpy(name, chip_name)
159 tp_strcpy(action, action->name)
160 ),
161 TP_printk("")
162 )
163
164 #endif /* _TRACE_LTTNG_STATEDUMP_H */
165
166 /* This part must be outside protection */
167 #include "../../../probes/define_trace.h"
This page took 0.033733 seconds and 4 git commands to generate.