Commit 59119c09 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf lock contention: Factor out lock_type_table

Move it out of get_type_str() so that we can reuse the table for others
later.
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Blake Jones <blakejones@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <song@kernel.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20221219201732.460111-2-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 8b269b75
...@@ -1437,30 +1437,30 @@ static void sort_result(void) ...@@ -1437,30 +1437,30 @@ static void sort_result(void)
} }
} }
static const char *get_type_str(struct lock_stat *st) static const struct {
{ unsigned int flags;
static const struct { const char *name;
unsigned int flags; } lock_type_table[] = {
const char *name; { 0, "semaphore" },
} table[] = { { LCB_F_SPIN, "spinlock" },
{ 0, "semaphore" }, { LCB_F_SPIN | LCB_F_READ, "rwlock:R" },
{ LCB_F_SPIN, "spinlock" }, { LCB_F_SPIN | LCB_F_WRITE, "rwlock:W"},
{ LCB_F_SPIN | LCB_F_READ, "rwlock:R" }, { LCB_F_READ, "rwsem:R" },
{ LCB_F_SPIN | LCB_F_WRITE, "rwlock:W"}, { LCB_F_WRITE, "rwsem:W" },
{ LCB_F_READ, "rwsem:R" }, { LCB_F_RT, "rtmutex" },
{ LCB_F_WRITE, "rwsem:W" }, { LCB_F_RT | LCB_F_READ, "rwlock-rt:R" },
{ LCB_F_RT, "rtmutex" }, { LCB_F_RT | LCB_F_WRITE, "rwlock-rt:W"},
{ LCB_F_RT | LCB_F_READ, "rwlock-rt:R" }, { LCB_F_PERCPU | LCB_F_READ, "pcpu-sem:R" },
{ LCB_F_RT | LCB_F_WRITE, "rwlock-rt:W"}, { LCB_F_PERCPU | LCB_F_WRITE, "pcpu-sem:W" },
{ LCB_F_PERCPU | LCB_F_READ, "pcpu-sem:R" }, { LCB_F_MUTEX, "mutex" },
{ LCB_F_PERCPU | LCB_F_WRITE, "pcpu-sem:W" }, { LCB_F_MUTEX | LCB_F_SPIN, "mutex" },
{ LCB_F_MUTEX, "mutex" }, };
{ LCB_F_MUTEX | LCB_F_SPIN, "mutex" },
};
for (unsigned int i = 0; i < ARRAY_SIZE(table); i++) { static const char *get_type_str(unsigned int flags)
if (table[i].flags == st->flags) {
return table[i].name; for (unsigned int i = 0; i < ARRAY_SIZE(lock_type_table); i++) {
if (lock_type_table[i].flags == flags)
return lock_type_table[i].name;
} }
return "unknown"; return "unknown";
} }
...@@ -1514,7 +1514,7 @@ static void print_contention_result(struct lock_contention *con) ...@@ -1514,7 +1514,7 @@ static void print_contention_result(struct lock_contention *con)
switch (aggr_mode) { switch (aggr_mode) {
case LOCK_AGGR_CALLER: case LOCK_AGGR_CALLER:
pr_info(" %10s %s\n", get_type_str(st), st->name); pr_info(" %10s %s\n", get_type_str(st->flags), st->name);
break; break;
case LOCK_AGGR_TASK: case LOCK_AGGR_TASK:
pid = st->addr; pid = st->addr;
......
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