Skip to content

Commit

Permalink
get the pid namespace by following task_active_pid_ns()
Browse files Browse the repository at this point in the history
Signed-off-by: Li Chengyuan chengyuanli@hotmail.com
  • Loading branch information
ChengyuanLiCY committed Oct 7, 2021
1 parent a73504e commit 7563eef
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion libbpf-tools/runqlat.bpf.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,24 @@ int trace_enqueue(u32 tgid, u32 pid)
return 0;
}

static __always_inline unsigned int pid_namespace(struct task_struct *task)
{
struct pid *pid;
unsigned int level;
struct upid upid;
unsigned int inum;

/* get the pid namespace by following task_active_pid_ns(),
* pid->numbers[pid->level].ns
*/
pid = BPF_CORE_READ(task, thread_pid);
level = BPF_CORE_READ(pid, level);
bpf_core_read(&upid, sizeof(upid), &pid->numbers[level]);
inum = BPF_CORE_READ(upid.ns, ns.inum);

return inum;
}

SEC("tp_btf/sched_wakeup")
int BPF_PROG(sched_wakeup, struct task_struct *p)
{
Expand Down Expand Up @@ -86,7 +104,7 @@ int BPF_PROG(sched_swith, bool preempt, struct task_struct *prev,
else if (targ_per_thread)
hkey = pid;
else if (targ_per_pidns)
hkey = next->nsproxy->pid_ns_for_children->ns.inum;
hkey = pid_namespace(next);
else
hkey = -1;
histp = bpf_map_lookup_or_try_init(&hists, &hkey, &zero);
Expand Down

0 comments on commit 7563eef

Please sign in to comment.