Re: [PATCH bpf-next v12 06/10] bpftool: Generate skeleton for global percpu data
Andrii Nakryiko <[email protected]>
| Newsgroups | gmane.linux.kernel.bpf,gmane.linux.kernel |
|---|---|
| Message-ID | <CAEf4BzaeKxZKgF-QeJ0RdGGwxSjKcH8uzgUnA8bBVgAX++phog@mail.gmail.com> |
On Thu, Aug 13, 2026 at 7:03 PM Leon Hwang <[email protected]> wrote: > > On 14/8/26 01:56, Andrii Nakryiko wrote: > > On Thu, Aug 13, 2026 at 8:24 AM Leon Hwang <[email protected]> wrote: > [...] > >> @@ -263,13 +269,24 @@ static bool is_mmapable_map(const struct bpf_map *map, char *buf, size_t sz) > >> return true; > >> } > >> > >> - if (!bpf_map__is_internal(map) || !(bpf_map__map_flags(map) & BPF_F_MMAPABLE)) > >> + if (!bpf_map__is_internal(map)) > >> return false; > >> > >> if (!get_map_ident(map, buf, sz)) > >> return false; > >> > >> - return true; > >> + if (bpf_map__map_flags(map) & BPF_F_MMAPABLE) > >> + return true; > >> + > >> + if (bpf_map__type(map) == BPF_MAP_TYPE_PERCPU_ARRAY) > >> + return bpf_map__btf_value_type_id(map) != 0; > > > > why do we need this btf_value_type_id() check? in what case it's > > expected that there will be no BTF info set? > > Add this check by referencing btf_value_type_id check in libbpf's > map_is_mmapable(). That said, if btf_value_type_id is 0 for > global/percpu data, is_mmapable_map() should return false for them. > > And, if the bpf obj is compiled without -g, this check helps to avoid > generating struct for percpu data explicitly. > I don't think skeleton can be generated if BPF object was compiled without -g, so let's just drop that btf_value_type_id() check, it causes more questions than it's actually useful > Thanks, > Leon > > > > >> + > >> + return false; > >> +} > >> + > >> +static bool is_mmapable_map(const struct bpf_map *map, char *buf, size_t sz) > >> +{ > >> + return is_skel_data(map, buf, sz) && bpf_map__type(map) != BPF_MAP_TYPE_PERCPU_ARRAY; > >> } > >> > > > > [...] >