On Fri, Feb 15, 2019 at 01:53:48PM -0800, Song Liu wrote: SNIP
> diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h > index d01b8355f4ca..d0c53fe6d431 100644 > --- a/tools/perf/util/env.h > +++ b/tools/perf/util/env.h > @@ -3,7 +3,9 @@ > #define __PERF_ENV_H > > #include <linux/types.h> > +#include <linux/rbtree.h> > #include "cpumap.h" > +#include "rwsem.h" > > struct cpu_topology_map { > int socket_id; > @@ -64,8 +66,19 @@ struct perf_env { > struct memory_node *memory_nodes; > unsigned long long memory_bsize; > u64 clockid_res_ns; > + > + /* > + * bpf_info_lock protects bpf rbtrees. This is needed because the > + * trees are accessed by different threads in perf-top > + */ > + struct { > + struct rw_semaphore bpf_info_lock; > + struct rb_root bpf_prog_infos; there's already struct name 'bpf_progs', no need for those bpf_ prefixes jirka > + } bpf_progs; SNIP