Commit d8e40b58 authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo

perf top: Update use of pthread mutex

Switch to the use of mutex wrappers that provide better error checking.
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Reviewed-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Acked-by: default avatarNamhyung 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-14-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 9b3726ef
...@@ -893,10 +893,10 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx) ...@@ -893,10 +893,10 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx)
perf_mmap__consume(&md->core); perf_mmap__consume(&md->core);
if (top->qe.rotate) { if (top->qe.rotate) {
pthread_mutex_lock(&top->qe.mutex); mutex_lock(&top->qe.mutex);
top->qe.rotate = false; top->qe.rotate = false;
pthread_cond_signal(&top->qe.cond); cond_signal(&top->qe.cond);
pthread_mutex_unlock(&top->qe.mutex); mutex_unlock(&top->qe.mutex);
} }
} }
...@@ -1100,10 +1100,10 @@ static void *process_thread(void *arg) ...@@ -1100,10 +1100,10 @@ static void *process_thread(void *arg)
out = rotate_queues(top); out = rotate_queues(top);
pthread_mutex_lock(&top->qe.mutex); mutex_lock(&top->qe.mutex);
top->qe.rotate = true; top->qe.rotate = true;
pthread_cond_wait(&top->qe.cond, &top->qe.mutex); cond_wait(&top->qe.cond, &top->qe.mutex);
pthread_mutex_unlock(&top->qe.mutex); mutex_unlock(&top->qe.mutex);
if (ordered_events__flush(out, OE_FLUSH__TOP)) if (ordered_events__flush(out, OE_FLUSH__TOP))
pr_err("failed to process events\n"); pr_err("failed to process events\n");
...@@ -1217,8 +1217,8 @@ static void init_process_thread(struct perf_top *top) ...@@ -1217,8 +1217,8 @@ static void init_process_thread(struct perf_top *top)
ordered_events__set_copy_on_queue(&top->qe.data[0], true); ordered_events__set_copy_on_queue(&top->qe.data[0], true);
ordered_events__set_copy_on_queue(&top->qe.data[1], true); ordered_events__set_copy_on_queue(&top->qe.data[1], true);
top->qe.in = &top->qe.data[0]; top->qe.in = &top->qe.data[0];
pthread_mutex_init(&top->qe.mutex, NULL); mutex_init(&top->qe.mutex);
pthread_cond_init(&top->qe.cond, NULL); cond_init(&top->qe.cond);
} }
static int __cmd_top(struct perf_top *top) static int __cmd_top(struct perf_top *top)
...@@ -1349,7 +1349,7 @@ static int __cmd_top(struct perf_top *top) ...@@ -1349,7 +1349,7 @@ static int __cmd_top(struct perf_top *top)
out_join: out_join:
pthread_join(thread, NULL); pthread_join(thread, NULL);
out_join_thread: out_join_thread:
pthread_cond_signal(&top->qe.cond); cond_signal(&top->qe.cond);
pthread_join(thread_process, NULL); pthread_join(thread_process, NULL);
return ret; return ret;
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "tool.h" #include "tool.h"
#include "evswitch.h" #include "evswitch.h"
#include "annotate.h" #include "annotate.h"
#include "mutex.h"
#include "ordered-events.h" #include "ordered-events.h"
#include "record.h" #include "record.h"
#include <linux/types.h> #include <linux/types.h>
...@@ -53,8 +54,8 @@ struct perf_top { ...@@ -53,8 +54,8 @@ struct perf_top {
struct ordered_events *in; struct ordered_events *in;
struct ordered_events data[2]; struct ordered_events data[2];
bool rotate; bool rotate;
pthread_mutex_t mutex; struct mutex mutex;
pthread_cond_t cond; struct cond cond;
} qe; } qe;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment