Messages in this thread | | | Date | Wed, 4 May 2022 12:56:31 +0300 | Subject | Re: [PATCH RFC 18/21] libperf evlist: Allow mixing per-thread and per-cpu mmaps | From | Adrian Hunter <> |
| |
On 3/05/22 23:29, Namhyung Kim wrote: > On Fri, Apr 22, 2022 at 9:25 AM Adrian Hunter <adrian.hunter@intel.com> wrote: >> >> mmap_per_evsel() will skip events that do not match the CPU, so all CPUs >> can be iterated in any case. >> >> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> >> --- > [...] >> @@ -561,9 +538,12 @@ static int perf_evlist__nr_mmaps(struct perf_evlist *evlist) >> { >> int nr_mmaps; >> >> + /* One for each CPU */ >> nr_mmaps = perf_cpu_map__nr(evlist->all_cpus); >> - if (perf_cpu_map__empty(evlist->all_cpus)) >> - nr_mmaps = perf_thread_map__nr(evlist->threads); >> + /* One for each thread */ >> + nr_mmaps += perf_thread_map__nr(evlist->threads); >> + /* Minus the dummy CPU or dummy thread */ >> + nr_mmaps -= 1; > > I'm not sure it'd work for per-task events with default-per-cpu mode.
Thanks for noticing that. It ends up being too high which doesn't fail immediately. I need to add a check that nr_mmaps matches the number of mmaps actually made.
> > Thanks, > Namhyung > >> >> return nr_mmaps; >> }
| |