lttng_statedump_process_state for each PID NS
[lttng-modules.git] / instrumentation / events / lttng-module / lttng-statedump.h
index 5fc15a88be8234d7a7e576be12ef5e1f8d4a4ad0..ea0b6d9d99eeeade8aaec9be89cee228c85e729f 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <linux/tracepoint.h>
 #include <linux/nsproxy.h>
+#include <linux/pid_namespace.h>
 
 TRACE_EVENT(lttng_statedump_start,
        TP_PROTO(struct lttng_session *session),
@@ -30,8 +31,9 @@ TRACE_EVENT(lttng_statedump_end,
 TRACE_EVENT(lttng_statedump_process_state,
        TP_PROTO(struct lttng_session *session,
                struct task_struct *p,
-               int type, int mode, int submode, int status),
-       TP_ARGS(session, p, type, mode, submode, status),
+               int type, int mode, int submode, int status,
+               struct pid_namespace *pid_ns),
+       TP_ARGS(session, p, type, mode, submode, status, pid_ns),
        TP_STRUCT__entry(
                __field(pid_t, tid)
                __field(pid_t, vtid)
@@ -44,38 +46,13 @@ TRACE_EVENT(lttng_statedump_process_state,
                __field(int, mode)
                __field(int, submode)
                __field(int, status)
+               __field(int, ns_level)
        ),
        TP_fast_assign(
                tp_assign(tid, p->pid)
-               tp_assign(vtid,
-                       ({
-                               struct nsproxy *proxy;
-                               pid_t ret = 0;
-
-                               rcu_read_lock();
-                               proxy = task_nsproxy(p);
-                               if (proxy) {
-                                       ret = task_pid_nr_ns(p,
-                                               proxy->pid_ns);
-                               }
-                               rcu_read_unlock();
-                               ret;
-                       }))
+               tp_assign(vtid, pid_ns ? task_pid_nr_ns(p, pid_ns) : 0)
                tp_assign(pid, p->tgid)
-               tp_assign(vpid,
-                       ({
-                                struct nsproxy *proxy;
-                                pid_t ret = 0;
-
-                                rcu_read_lock();
-                                proxy = task_nsproxy(p);
-                                if (proxy) {
-                                        ret = task_tgid_nr_ns(p,
-                                                proxy->pid_ns);
-                                }
-                                rcu_read_unlock();
-                                ret;
-                        }))
+               tp_assign(vpid, pid_ns ? task_tgid_nr_ns(p, pid_ns) : 0)
                tp_assign(ppid,
                        ({
                                pid_t ret;
@@ -88,16 +65,11 @@ TRACE_EVENT(lttng_statedump_process_state,
                tp_assign(vppid,
                        ({
                                struct task_struct *parent;
-                               struct nsproxy *proxy;
                                pid_t ret = 0;
 
                                rcu_read_lock();
                                parent = rcu_dereference(p->real_parent);
-                               proxy = task_nsproxy(parent);
-                               if (proxy) {
-                                       ret = task_tgid_nr_ns(parent,
-                                               proxy->pid_ns);
-                               }
+                               ret = task_tgid_nr_ns(parent, pid_ns);
                                rcu_read_unlock();
                                ret;
                        }))
@@ -106,6 +78,7 @@ TRACE_EVENT(lttng_statedump_process_state,
                tp_assign(mode, mode)
                tp_assign(submode, submode)
                tp_assign(status, status)
+               tp_assign(ns_level, pid_ns ? pid_ns->level : 0)
        ),
        TP_printk("")
 )
This page took 0.025007 seconds and 4 git commands to generate.