Statedump event for block devices
[lttng-modules.git] / instrumentation / events / lttng-module / lttng-statedump.h
index ea0b6d9d99eeeade8aaec9be89cee228c85e729f..efd22d77dfb774a7711ed4a0daa6dd45149ceafa 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/tracepoint.h>
 #include <linux/nsproxy.h>
 #include <linux/pid_namespace.h>
+#include <linux/types.h>
 
 TRACE_EVENT(lttng_statedump_start,
        TP_PROTO(struct lttng_session *session),
@@ -67,10 +68,12 @@ TRACE_EVENT(lttng_statedump_process_state,
                                struct task_struct *parent;
                                pid_t ret = 0;
 
-                               rcu_read_lock();
-                               parent = rcu_dereference(p->real_parent);
-                               ret = task_tgid_nr_ns(parent, pid_ns);
-                               rcu_read_unlock();
+                               if (pid_ns) {
+                                       rcu_read_lock();
+                                       parent = rcu_dereference(p->real_parent);
+                                       ret = task_tgid_nr_ns(parent, pid_ns);
+                                       rcu_read_unlock();
+                               }
                                ret;
                        }))
                tp_memcpy(name, p->comm, TASK_COMM_LEN)
@@ -139,6 +142,21 @@ TRACE_EVENT(lttng_statedump_network_interface,
        TP_printk("")
 )
 
+TRACE_EVENT(lttng_statedump_block_device,
+       TP_PROTO(struct lttng_session *session,
+               dev_t dev, const char *diskname),
+       TP_ARGS(session, dev, diskname),
+       TP_STRUCT__entry(
+               __field(dev_t, dev)
+               __string(diskname, diskname)
+       ),
+       TP_fast_assign(
+               tp_assign(dev, dev)
+               tp_strcpy(diskname, diskname)
+       ),
+       TP_printk("")
+)
+
 /* Called with desc->lock held */
 TRACE_EVENT(lttng_statedump_interrupt,
        TP_PROTO(struct lttng_session *session,
@@ -148,12 +166,12 @@ TRACE_EVENT(lttng_statedump_interrupt,
        TP_STRUCT__entry(
                __field(unsigned int, irq)
                __string(name, chip_name)
-               __string(action, action->name)
+               __string(action, action->name ? : "")
        ),
        TP_fast_assign(
                tp_assign(irq, irq)
                tp_strcpy(name, chip_name)
-               tp_strcpy(action, action->name)
+               tp_strcpy(action, action->name ? : "")
        ),
        TP_printk("")
 )
This page took 0.023659 seconds and 4 git commands to generate.