Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf hist: Update use of pthread mutex

Switch to the use of mutex wrappers that provide better error checking.

Signed-off-by: Ian Rogers <irogers@google.com>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexandre Truong <alexandre.truong@arm.com>
Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Andres Freund <andres@anarazel.de>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: André Almeida <andrealmeid@igalia.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Colin Ian King <colin.king@intel.com>
Cc: Dario Petrillo <dario.pk1@gmail.com>
Cc: Darren Hart <dvhart@infradead.org>
Cc: Dave Marchevsky <davemarchevsky@fb.com>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: Fangrui Song <maskray@google.com>
Cc: Hewenliang <hewenliang4@huawei.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jason Wang <wangborong@cdjrlc.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Kim Phillips <kim.phillips@amd.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Martin Liška <mliska@suse.cz>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quentin Monnet <quentin@isovalent.com>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: Remi Bernon <rbernon@codeweavers.com>
Cc: Riccardo Mancini <rickyman7@gmail.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thomas Richter <tmricht@linux.ibm.com>
Cc: Tom Rix <trix@redhat.com>
Cc: Weiguo Li <liwg06@foxmail.com>
Cc: Wenyu Liu <liuwenyu7@huawei.com>
Cc: William Cohen <wcohen@redhat.com>
Cc: Zechuan Chen <chenzechuan1@huawei.com>
Cc: bpf@vger.kernel.org
Cc: llvm@lists.linux.dev
Cc: yaowenbin <yaowenbin1@huawei.com>
Link: https://lore.kernel.org/r/20220826164242.43412-5-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Ian Rogers and committed by
Arnaldo Carvalho de Melo
8e03bb88 130f267a

+9 -9
+4 -4
tools/perf/builtin-top.c
··· 220 220 * This function is now called with he->hists->lock held. 221 221 * Release it before going to sleep. 222 222 */ 223 - pthread_mutex_unlock(&he->hists->lock); 223 + mutex_unlock(&he->hists->lock); 224 224 225 225 if (err == -ERANGE && !he->ms.map->erange_warned) 226 226 ui__warn_map_erange(he->ms.map, sym, ip); ··· 230 230 sleep(1); 231 231 } 232 232 233 - pthread_mutex_lock(&he->hists->lock); 233 + mutex_lock(&he->hists->lock); 234 234 } 235 235 } 236 236 ··· 836 836 else 837 837 iter.ops = &hist_iter_normal; 838 838 839 - pthread_mutex_lock(&hists->lock); 839 + mutex_lock(&hists->lock); 840 840 841 841 if (hist_entry_iter__add(&iter, &al, top->max_stack, top) < 0) 842 842 pr_err("Problem incrementing symbol period, skipping event\n"); 843 843 844 - pthread_mutex_unlock(&hists->lock); 844 + mutex_unlock(&hists->lock); 845 845 } 846 846 847 847 addr_location__put(&al);
+3 -3
tools/perf/util/hist.c
··· 1622 1622 { 1623 1623 struct rb_root_cached *root; 1624 1624 1625 - pthread_mutex_lock(&hists->lock); 1625 + mutex_lock(&hists->lock); 1626 1626 1627 1627 root = hists->entries_in; 1628 1628 if (++hists->entries_in > &hists->entries_in_array[1]) 1629 1629 hists->entries_in = &hists->entries_in_array[0]; 1630 1630 1631 - pthread_mutex_unlock(&hists->lock); 1631 + mutex_unlock(&hists->lock); 1632 1632 1633 1633 return root; 1634 1634 } ··· 2805 2805 hists->entries_in = &hists->entries_in_array[0]; 2806 2806 hists->entries_collapsed = RB_ROOT_CACHED; 2807 2807 hists->entries = RB_ROOT_CACHED; 2808 - pthread_mutex_init(&hists->lock, NULL); 2808 + mutex_init(&hists->lock); 2809 2809 hists->socket_filter = -1; 2810 2810 hists->hpp_list = hpp_list; 2811 2811 INIT_LIST_HEAD(&hists->hpp_formats);
+2 -2
tools/perf/util/hist.h
··· 4 4 5 5 #include <linux/rbtree.h> 6 6 #include <linux/types.h> 7 - #include <pthread.h> 8 7 #include "evsel.h" 9 8 #include "color.h" 10 9 #include "events_stats.h" 10 + #include "mutex.h" 11 11 12 12 struct hist_entry; 13 13 struct hist_entry_ops; ··· 98 98 const struct dso *dso_filter; 99 99 const char *uid_filter_str; 100 100 const char *symbol_filter_str; 101 - pthread_mutex_t lock; 101 + struct mutex lock; 102 102 struct hists_stats stats; 103 103 u64 event_stream; 104 104 u16 col_len[HISTC_NR_COLS];