#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),
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)
TRACE_EVENT(lttng_statedump_file_descriptor,
TP_PROTO(struct lttng_session *session,
- struct task_struct *p, int fd, const char *filename),
- TP_ARGS(session, p, fd, filename),
+ struct task_struct *p, int fd, const char *filename,
+ unsigned int flags, fmode_t fmode),
+ TP_ARGS(session, p, fd, filename, flags, fmode),
TP_STRUCT__entry(
__field(pid_t, pid)
__field(int, fd)
+ __field_oct(unsigned int, flags)
+ __field_hex(fmode_t, fmode)
__string(filename, filename)
),
TP_fast_assign(
tp_assign(pid, p->tgid)
tp_assign(fd, fd)
+ tp_assign(flags, flags)
+ tp_assign(fmode, fmode)
tp_strcpy(filename, filename)
),
TP_printk("")
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,
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("")
)