Re: [PATCH 5/9] perf, bpf: save bpf_prog_info in a rbtree in perf_env

From: Song Liu
Date: Thu Feb 14 2019 - 12:02:40 EST




> On Feb 14, 2019, at 4:26 AM, Jiri Olsa <jolsa@xxxxxxxxxx> wrote:
>
> On Fri, Feb 08, 2019 at 05:17:01PM -0800, Song Liu wrote:
>
> SNIP
>
>> diff --git a/tools/perf/util/env.h b/tools/perf/util/env.h
>> index d01b8355f4ca..5894a177b7cf 100644
>> --- a/tools/perf/util/env.h
>> +++ b/tools/perf/util/env.h
>> @@ -3,7 +3,10 @@
>> #define __PERF_ENV_H
>>
>> #include <linux/types.h>
>> +#include <linux/rbtree.h>
>> #include "cpumap.h"
>> +#include "rwsem.h"
>> +#include "bpf-event.h"
>>
>> struct cpu_topology_map {
>> int socket_id;
>> @@ -64,6 +67,8 @@ struct perf_env {
>> struct memory_node *memory_nodes;
>> unsigned long long memory_bsize;
>> u64 clockid_res_ns;
>> + struct rw_semaphore bpf_info_lock;
>
> why's the lock needed?
>
> jirka

It protects the retries for bpf_prog_info and btf. For perf-top,
we will have one thread writing to the trees, while the main
thread reading from them.

Let me add comments to clarify.

Thanks,
Song