]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf hist: Remove evsel parameter from inc samples functions
authorIan Rogers <irogers@google.com>
Wed, 20 May 2026 19:05:13 +0000 (12:05 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 20 May 2026 19:35:59 +0000 (16:35 -0300)
As struct perf_sample now directly contains its own resolved evsel pointer,
passing the evsel separately is redundant and clutters the interface.

Remove the redundant evsel parameter from hist-specific handlers and
structures, ensuring the tool always directly accesses the evsel bound to the
sample. This simplifies the API signatures and eliminates the risk of passing
an inconsistent evsel.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andrew Jones <ajones@ventanamicro.com>
Cc: Anup Patel <anup@brainfault.org>
Cc: Athira Rajeev <atrajeev@linux.ibm.com>
Cc: Blake Jones <blakejones@google.com>
Cc: Chen Ni <nichen@iscas.ac.cn>
Cc: Chun-Tse Shao <ctshao@google.com>
Cc: Dapeng Mi <dapeng1.mi@linux.intel.com>
Cc: Derek Foreman <derek.foreman@collabora.com>
Cc: Dmitriy Vyukov <dvyukov@google.com>
Cc: Dr. David Alan Gilbert <linux@treblig.org>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Hrishikesh Suresh <hrishikesh123s@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Krzysztof Ɓopatowski <krzysztof.m.lopatowski@gmail.com>
Cc: Leo Yan <leo.yan@arm.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <pjw@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quan Zhou <zhouquan@iscas.ac.cn>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: Swapnil Sapkal <swapnil.sapkal@amd.com>
Cc: Thomas Falcon <thomas.falcon@intel.com>
Cc: Tianyou Li <tianyou.li@intel.com>
Cc: Yujie Liu <yujie.liu@intel.com>
Cc: tanze <tanze@kylinos.cn>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-annotate.c
tools/perf/builtin-c2c.c
tools/perf/builtin-report.c
tools/perf/builtin-top.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h

index 58e56f826367d6c0eb03896315361f1e3450540f..ee1ba2dc35f41a73067b15d180a0ec45a9600b35 100644 (file)
@@ -176,16 +176,15 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
        struct hist_entry *he = iter->he;
        struct branch_info *bi;
        struct perf_sample *sample = iter->sample;
-       struct evsel *evsel = iter->evsel;
        int err;
 
        bi = he->branch_info;
-       err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+       err = addr_map_symbol__inc_samples(&bi->from, sample);
 
        if (err)
                goto out;
 
-       err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+       err = addr_map_symbol__inc_samples(&bi->to, sample);
 
 out:
        return err;
@@ -275,7 +274,7 @@ static int evsel__add_sample(struct evsel *evsel, struct perf_sample *sample,
        if (he == NULL)
                return -ENOMEM;
 
-       ret = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+       ret = hist_entry__inc_addr_samples(he, sample, al->addr);
        hists__inc_nr_samples(hists, true);
        return ret;
 }
index 2fa3d7ec8a097640cd9f5b5ec39f7772ff940ad8..36f38694992386adf4b32580e8913bcea755d727 100644 (file)
@@ -371,7 +371,7 @@ static int process_sample_event(const struct perf_tool *tool __maybe_unused,
 
        if (perf_c2c__has_annotation(NULL)) {
                perf_c2c__evsel_hists_inc_stats(evsel, he, sample);
-               addr_map_symbol__inc_samples(mem_info__iaddr(mi), sample, evsel);
+               addr_map_symbol__inc_samples(mem_info__iaddr(mi), sample);
        }
 
        ret = hist_entry__append_callchain(he, sample);
index 9955ce8cce00bdb92e97590ed1fddd17b6b1194c..cc3ee712fe62f10a966aa867ff1dfe6b7fdc837e 100644 (file)
@@ -171,7 +171,6 @@ static int hist_iter__report_callback(struct hist_entry_iter *iter,
        int err = 0;
        struct report *rep = arg;
        struct hist_entry *he = iter->he;
-       struct evsel *evsel = iter->evsel;
        struct perf_sample *sample = iter->sample;
        struct mem_info *mi;
        struct branch_info *bi;
@@ -181,25 +180,25 @@ static int hist_iter__report_callback(struct hist_entry_iter *iter,
 
        if (sort__mode == SORT_MODE__BRANCH) {
                bi = he->branch_info;
-               err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+               err = addr_map_symbol__inc_samples(&bi->from, sample);
                if (err)
                        goto out;
 
-               err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+               err = addr_map_symbol__inc_samples(&bi->to, sample);
 
        } else if (rep->mem_mode) {
                mi = he->mem_info;
-               err = addr_map_symbol__inc_samples(mem_info__daddr(mi), sample, evsel);
+               err = addr_map_symbol__inc_samples(mem_info__daddr(mi), sample);
                if (err)
                        goto out;
 
-               err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+               err = hist_entry__inc_addr_samples(he, sample, al->addr);
 
        } else if (symbol_conf.cumulate_callchain) {
                if (single)
-                       err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+                       err = hist_entry__inc_addr_samples(he, sample, al->addr);
        } else {
-               err = hist_entry__inc_addr_samples(he, sample, evsel, al->addr);
+               err = hist_entry__inc_addr_samples(he, sample, al->addr);
        }
 
 out:
@@ -215,7 +214,6 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
        struct report *rep = arg;
        struct branch_info *bi = he->branch_info;
        struct perf_sample *sample = iter->sample;
-       struct evsel *evsel = iter->evsel;
        int err;
 
        branch_type_count(&rep->brtype_stat, &bi->flags,
@@ -224,11 +222,11 @@ static int hist_iter__branch_callback(struct hist_entry_iter *iter,
        if (!ui__has_annotation() && !rep->symbol_ipc)
                return 0;
 
-       err = addr_map_symbol__inc_samples(&bi->from, sample, evsel);
+       err = addr_map_symbol__inc_samples(&bi->from, sample);
        if (err)
                goto out;
 
-       err = addr_map_symbol__inc_samples(&bi->to, sample, evsel);
+       err = addr_map_symbol__inc_samples(&bi->to, sample);
 
 out:
        return err;
index f6eb543de537a3d34240e5a7fd229aace075d0bf..b4fc991b4eeb45d499f6fad81c39aa56e596b02a 100644 (file)
@@ -199,7 +199,7 @@ static void ui__warn_map_erange(struct map *map, struct symbol *sym, u64 ip)
 static void perf_top__record_precise_ip(struct perf_top *top,
                                        struct hist_entry *he,
                                        struct perf_sample *sample,
-                                       struct evsel *evsel, u64 ip)
+                                       u64 ip)
        EXCLUSIVE_LOCKS_REQUIRED(he->hists->lock)
 {
        struct annotation *notes;
@@ -216,7 +216,7 @@ static void perf_top__record_precise_ip(struct perf_top *top,
        if (!annotation__trylock(notes))
                return;
 
-       err = hist_entry__inc_addr_samples(he, sample, evsel, ip);
+       err = hist_entry__inc_addr_samples(he, sample, ip);
 
        annotation__unlock(notes);
 
@@ -735,7 +735,7 @@ static int hist_iter__top_callback(struct hist_entry_iter *iter,
        struct evsel *evsel = iter->evsel;
 
        if (perf_hpp_list.sym && single)
-               perf_top__record_precise_ip(top, iter->he, iter->sample, evsel, al->addr);
+               perf_top__record_precise_ip(top, iter->he, iter->sample, al->addr);
 
        hist__account_cycles(iter->sample->branch_stack, al, iter->sample,
                             !(top->record_opts.branch_stack & PERF_SAMPLE_BRANCH_ANY),
index e745f3034a0e1c52078653d7bf63b22ccb79f5c2..470569745abef4f544b20807b527f09b48186201 100644 (file)
@@ -213,9 +213,10 @@ static int __symbol__account_cycles(struct cyc_hist *ch,
 }
 
 static int __symbol__inc_addr_samples(struct map_symbol *ms,
-                                     struct annotated_source *src, struct evsel *evsel, u64 addr,
+                                     struct annotated_source *src, u64 addr,
                                      struct perf_sample *sample)
 {
+       struct evsel *evsel = sample->evsel;
        struct symbol *sym = ms->sym;
        long hash_key;
        u64 offset;
@@ -318,7 +319,7 @@ alloc_histograms:
 }
 
 static int symbol__inc_addr_samples(struct map_symbol *ms,
-                                   struct evsel *evsel, u64 addr,
+                                   u64 addr,
                                    struct perf_sample *sample)
 {
        struct symbol *sym = ms->sym;
@@ -326,8 +327,8 @@ static int symbol__inc_addr_samples(struct map_symbol *ms,
 
        if (sym == NULL)
                return 0;
-       src = symbol__hists(sym, evsel->evlist->core.nr_entries);
-       return src ? __symbol__inc_addr_samples(ms, src, evsel, addr, sample) : 0;
+       src = symbol__hists(sym, sample->evsel->evlist->core.nr_entries);
+       return src ? __symbol__inc_addr_samples(ms, src, addr, sample) : 0;
 }
 
 static int symbol__account_br_cntr(struct annotated_branch *branch,
@@ -581,16 +582,14 @@ static int annotation__compute_ipc(struct annotation *notes, size_t size,
        return 0;
 }
 
-int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample,
-                                struct evsel *evsel)
+int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample)
 {
-       return symbol__inc_addr_samples(&ams->ms, evsel, ams->al_addr, sample);
+       return symbol__inc_addr_samples(&ams->ms, ams->al_addr, sample);
 }
 
-int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample,
-                                struct evsel *evsel, u64 ip)
+int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample, u64 ip)
 {
-       return symbol__inc_addr_samples(&he->ms, evsel, ip, sample);
+       return symbol__inc_addr_samples(&he->ms, ip, sample);
 }
 
 
index 696e36dbf0135331d02a0330f2459ae3ac2f4817..1aa6df7d16187e76bb085dc2cf177088c12050e6 100644 (file)
@@ -422,8 +422,7 @@ static inline struct annotation *symbol__annotation(struct symbol *sym)
        return (void *)sym - symbol_conf.priv_size;
 }
 
-int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample,
-                                struct evsel *evsel);
+int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample);
 
 struct annotated_branch *annotation__get_branch(struct annotation *notes);
 
@@ -433,8 +432,7 @@ int addr_map_symbol__account_cycles(struct addr_map_symbol *ams,
                                    struct evsel *evsel,
                                    u64 br_cntr);
 
-int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample,
-                                struct evsel *evsel, u64 addr);
+int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample, u64 addr);
 
 struct annotated_source *symbol__hists(struct symbol *sym, int nr_hists);
 void symbol__annotate_zero_histograms(struct symbol *sym);