Re: [PATCH v2 bpf-next 3/4] selftests/bpf: Add profiler test
flat view
From: Song Liu <hidden>
Date: 2020-10-15 06:09:40
Also in:
bpf
On Oct 13, 2020, at 2:56 PM, Andrii Nakryiko [off-list ref] wrote:
[...]
I'd go with Kconfig + bpf_core_enum_value(), as it's shorter and nicer. This compiles and works with my Kconfig, but I haven't checked with CONFIG_CGROUP_PIDS defined.
Tested with CONFIG_CGROUP_PIDS, it looks good. Tested-by: Song Liu <redacted>
quoted hunk ↗ jump to hunk
diff --git a/tools/testing/selftests/bpf/progs/profiler.inc.hb/tools/testing/selftests/bpf/progs/profiler.inc.h index 00578311a423..79b8d2860a5c 100644--- a/tools/testing/selftests/bpf/progs/profiler.inc.h +++ b/tools/testing/selftests/bpf/progs/profiler.inc.h@@ -243,7 +243,11 @@ static ino_t get_inode_from_kernfs(structkernfs_node* node) } } -int pids_cgrp_id = 1; +extern bool CONFIG_CGROUP_PIDS __kconfig __weak; + +enum cgroup_subsys_id___local { + pids_cgrp_id___local = 1, /* anything but zero */ +}; static INLINE void* populate_cgroup_info(struct cgroup_data_t* cgroup_data, struct task_struct* task,@@ -253,7 +257,9 @@ static INLINE void* populate_cgroup_info(structcgroup_data_t* cgroup_data, BPF_CORE_READ(task, nsproxy, cgroup_ns, root_cset, dfl_cgrp, kn); struct kernfs_node* proc_kernfs = BPF_CORE_READ(task, cgroups, dfl_cgrp, kn); - if (ENABLE_CGROUP_V1_RESOLVER) { + if (ENABLE_CGROUP_V1_RESOLVER && CONFIG_CGROUP_PIDS) { + int cgrp_id = bpf_core_enum_value(enum cgroup_subsys_id___local, pids_cgrp_id___local); + #ifdef UNROLL #pragma unroll #endif@@ -262,7 +268,7 @@ static INLINE void* populate_cgroup_info(structcgroup_data_t* cgroup_data, BPF_CORE_READ(task, cgroups, subsys[i]); if (subsys != NULL) { int subsys_id = BPF_CORE_READ(subsys, ss, id); - if (subsys_id == pids_cgrp_id) { + if (subsys_id == cgrp_id) { proc_kernfs = BPF_CORE_READ(subsys, cgroup, kn); root_kernfs = BPF_CORE_READ(subsys, ss, root, kf_root, kn); break;