Merge tag 'v3.14.25' into backport/v3.14.24-ltsi-rc1+v3.14.25/snapshot-merge.wip
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / staging / lttng / 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/nsproxy.h>
9 #include <linux/pid_namespace.h>
10
11 TRACE_EVENT(lttng_statedump_start,
12         TP_PROTO(struct lttng_session *session),
13         TP_ARGS(session),
14         TP_STRUCT__entry(
15         ),
16         TP_fast_assign(
17         ),
18         TP_printk("")
19 )
20
21 TRACE_EVENT(lttng_statedump_end,
22         TP_PROTO(struct lttng_session *session),
23         TP_ARGS(session),
24         TP_STRUCT__entry(
25         ),
26         TP_fast_assign(
27         ),
28         TP_printk("")
29 )
30
31 TRACE_EVENT(lttng_statedump_process_state,
32         TP_PROTO(struct lttng_session *session,
33                 struct task_struct *p,
34                 int type, int mode, int submode, int status,
35                 struct pid_namespace *pid_ns),
36         TP_ARGS(session, p, type, mode, submode, status, pid_ns),
37         TP_STRUCT__entry(
38                 __field(pid_t, tid)
39                 __field(pid_t, vtid)
40                 __field(pid_t, pid)
41                 __field(pid_t, vpid)
42                 __field(pid_t, ppid)
43                 __field(pid_t, vppid)
44                 __array_text(char, name, TASK_COMM_LEN)
45                 __field(int, type)
46                 __field(int, mode)
47                 __field(int, submode)
48                 __field(int, status)
49                 __field(int, ns_level)
50         ),
51         TP_fast_assign(
52                 tp_assign(tid, p->pid)
53                 tp_assign(vtid, pid_ns ? task_pid_nr_ns(p, pid_ns) : 0)
54                 tp_assign(pid, p->tgid)
55                 tp_assign(vpid, pid_ns ? task_tgid_nr_ns(p, pid_ns) : 0)
56                 tp_assign(ppid,
57                         ({
58                                 pid_t ret;
59
60                                 rcu_read_lock();
61                                 ret = task_tgid_nr(p->real_parent);
62                                 rcu_read_unlock();
63                                 ret;
64                         }))
65                 tp_assign(vppid,
66                         ({
67                                 struct task_struct *parent;
68                                 pid_t ret = 0;
69
70                                 if (pid_ns) {
71                                         rcu_read_lock();
72                                         parent = rcu_dereference(p->real_parent);
73                                         ret = task_tgid_nr_ns(parent, pid_ns);
74                                         rcu_read_unlock();
75                                 }
76                                 ret;
77                         }))
78                 tp_memcpy(name, p->comm, TASK_COMM_LEN)
79                 tp_assign(type, type)
80                 tp_assign(mode, mode)
81                 tp_assign(submode, submode)
82                 tp_assign(status, status)
83                 tp_assign(ns_level, pid_ns ? pid_ns->level : 0)
84         ),
85         TP_printk("")
86 )
87
88 TRACE_EVENT(lttng_statedump_file_descriptor,
89         TP_PROTO(struct lttng_session *session,
90                 struct task_struct *p, int fd, const char *filename),
91         TP_ARGS(session, p, fd, filename),
92         TP_STRUCT__entry(
93                 __field(pid_t, pid)
94                 __field(int, fd)
95                 __string(filename, filename)
96         ),
97         TP_fast_assign(
98                 tp_assign(pid, p->tgid)
99                 tp_assign(fd, fd)
100                 tp_strcpy(filename, filename)
101         ),
102         TP_printk("")
103 )
104
105 TRACE_EVENT(lttng_statedump_vm_map,
106         TP_PROTO(struct lttng_session *session,
107                 struct task_struct *p, struct vm_area_struct *map,
108                 unsigned long inode),
109         TP_ARGS(session, p, map, inode),
110         TP_STRUCT__entry(
111                 __field(pid_t, pid)
112                 __field_hex(unsigned long, start)
113                 __field_hex(unsigned long, end)
114                 __field_hex(unsigned long, flags)
115                 __field(unsigned long, inode)
116                 __field(unsigned long, pgoff)
117         ),
118         TP_fast_assign(
119                 tp_assign(pid, p->tgid)
120                 tp_assign(start, map->vm_start)
121                 tp_assign(end, map->vm_end)
122                 tp_assign(flags, map->vm_flags)
123                 tp_assign(inode, inode)
124                 tp_assign(pgoff, map->vm_pgoff << PAGE_SHIFT)
125         ),
126         TP_printk("")
127 )
128
129 TRACE_EVENT(lttng_statedump_network_interface,
130         TP_PROTO(struct lttng_session *session,
131                 struct net_device *dev, struct in_ifaddr *ifa),
132         TP_ARGS(session, dev, ifa),
133         TP_STRUCT__entry(
134                 __string(name, dev->name)
135                 __field_network_hex(uint32_t, address_ipv4)
136         ),
137         TP_fast_assign(
138                 tp_strcpy(name, dev->name)
139                 tp_assign(address_ipv4, ifa ? ifa->ifa_address : 0U)
140         ),
141         TP_printk("")
142 )
143
144 /* Called with desc->lock held */
145 TRACE_EVENT(lttng_statedump_interrupt,
146         TP_PROTO(struct lttng_session *session,
147                 unsigned int irq, const char *chip_name,
148                 struct irqaction *action),
149         TP_ARGS(session, irq, chip_name, action),
150         TP_STRUCT__entry(
151                 __field(unsigned int, irq)
152                 __string(name, chip_name)
153                 __string(action, action->name ? : "")
154         ),
155         TP_fast_assign(
156                 tp_assign(irq, irq)
157                 tp_strcpy(name, chip_name)
158                 tp_strcpy(action, action->name ? : "")
159         ),
160         TP_printk("")
161 )
162
163 #endif /*  _TRACE_LTTNG_STATEDUMP_H */
164
165 /* This part must be outside protection */
166 #include "../../../probes/define_trace.h"