On Tue, Oct 13, 2020 at 12:57 PM Jiri Olsa <jolsa@xxxxxxxxxx> wrote: > > On Thu, Oct 08, 2020 at 06:12:39PM -0700, Alexei Starovoitov wrote: > > SNIP > > > + > > +#ifdef UNROLL > > +#pragma unroll > > +#endif > > + for (int i = 0; i < MAX_CGROUPS_PATH_DEPTH; i++) { > > + filepart_length = > > + bpf_probe_read_str(payload, MAX_PATH, BPF_CORE_READ(cgroup_node, name)); > > + if (!cgroup_node) > > + return payload; > > + if (cgroup_node == cgroup_root_node) > > + *root_pos = payload - payload_start; > > + if (filepart_length <= MAX_PATH) { > > + barrier_var(filepart_length); > > + payload += filepart_length; > > + } > > + cgroup_node = BPF_CORE_READ(cgroup_node, parent); > > + } > > + return payload; > > +} > > + > > +static ino_t get_inode_from_kernfs(struct kernfs_node* node) > > +{ > > + struct kernfs_node___52* node52 = (void*)node; > > + > > + if (bpf_core_field_exists(node52->id.ino)) { > > + barrier_var(node52); > > + return BPF_CORE_READ(node52, id.ino); > > + } else { > > + barrier_var(node); > > + return (u64)BPF_CORE_READ(node, id); > > + } > > +} > > + > > +int pids_cgrp_id = 1; > > > hi, > I'm getting compilation failure with this: > > CLNG-LLC [test_maps] profiler2.o > In file included from progs/profiler2.c:6: > progs/profiler.inc.h:246:5: error: redefinition of 'pids_cgrp_id' as different kind of symbol > int pids_cgrp_id = 1; > ^ > /home/jolsa/linux-qemu/tools/testing/selftests/bpf/tools/include/vmlinux.h:14531:2: note: previous definition is here > pids_cgrp_id = 11, > ^ > 1 error generated. > /opt/clang/bin/llc: error: /opt/clang/bin/llc: <stdin>:1:1: error: expected top-level entity > BPF obj compilation failed > ^ > make: *** [Makefile:396: /home/jolsa/linux-qemu/tools/testing/selftests/bpf/profiler2.o] Error 1 I got the same error with some .config. We should fix it with something below. I will send official patch soon. Thanks, Song diff --git i/tools/testing/selftests/bpf/progs/profiler.inc.h w/tools/testing/selftests/bpf/progs/profiler.inc.h index 00578311a4233..54f594efccbca 100644 --- i/tools/testing/selftests/bpf/progs/profiler.inc.h +++ w/tools/testing/selftests/bpf/progs/profiler.inc.h @@ -243,7 +243,7 @@ static ino_t get_inode_from_kernfs(struct kernfs_node* node) } } -int pids_cgrp_id = 1; +int pids_cgrp_id_ = 1; static INLINE void* populate_cgroup_info(struct cgroup_data_t* cgroup_data, struct task_struct* task, @@ -262,7 +262,7 @@ static INLINE void* populate_cgroup_info(struct cgroup_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 == pids_cgrp_id_) { proc_kernfs = BPF_CORE_READ(subsys, cgroup, kn); root_kernfs = BPF_CORE_READ(subsys, ss, root, kf_root, kn); break;