On Mon, Feb 25, 2019 at 04:20:10PM -0800, Song Liu wrote: SNIP
> diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h > index d01b8355f4ca..33ef4b2d2a29 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 lock; > + struct rb_root prog_infos; could be just 'infos' ^^^^ is already in struct name > + } bpf_progs; > }; > jirka