perf lock: Sort map info based on class name
Bugzilla: https://bugzilla.redhat.com/2123231 upstream ======== commit f4cf2d75acac66e172d43dd4c13e411cc5494fb8 Author: Namhyung Kim <namhyung@kernel.org> Date: Wed Jan 26 16:00:47 2022 -0800 description =========== Instead of the random order, sort it by lock class name. Before: # perf lock info -m Address of instance: name of class 0xffffa0d940ac5310: &dentry->d_lockref.lock 0xffffa0c20b0e1cb0: &dentry->d_lockref.lock 0xffffa0d8e051cc48: &base->lock 0xffffa0d94f992110: &anon_vma->rwsem 0xffffa0d947a4f278: (null) 0xffffa0c208f6e108: &map->lock 0xffffa0c213ad32c8: &cfs_rq->removed.lock 0xffffa0c20d695888: &parent->list_lock 0xffffa0c278775278: (null) 0xffffa0c212ad4690: &dentry->d_lockref.lock After: # perf lock info -m Address of instance: name of class 0xffffa0c20d538800: &(&sig->stats_lock)->lock 0xffffa0c216d4ec40: &(&sig->stats_lock)->lock 0xffffa1fe4cb04610: &(__futex_data.queues)[i].lock 0xffffa1fe4cb07750: &(__futex_data.queues)[i].lock 0xffffa1fe4cb07b50: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0b850: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0bcd0: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0e5d0: &(__futex_data.queues)[i].lock 0xffffa1fe4cb11ad0: &(__futex_data.queues)[i].lock Signed-off-by: Michael Petlan <mpetlan@redhat.com>
This commit is contained in:
parent
5a6ee05d93
commit
620a7df578
|
@ -757,6 +757,21 @@ static void dump_threads(void)
|
|||
}
|
||||
}
|
||||
|
||||
static int compare_maps(struct lock_stat *a, struct lock_stat *b)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (a->name && b->name)
|
||||
ret = strcmp(a->name, b->name);
|
||||
else
|
||||
ret = !!a->name - !!b->name;
|
||||
|
||||
if (!ret)
|
||||
return a->addr < b->addr;
|
||||
else
|
||||
return ret < 0;
|
||||
}
|
||||
|
||||
static void dump_map(void)
|
||||
{
|
||||
unsigned int i;
|
||||
|
@ -765,9 +780,12 @@ static void dump_map(void)
|
|||
pr_info("Address of instance: name of class\n");
|
||||
for (i = 0; i < LOCKHASH_SIZE; i++) {
|
||||
hlist_for_each_entry(st, &lockhash_table[i], hash_entry) {
|
||||
pr_info(" %#llx: %s\n", (unsigned long long)st->addr, st->name);
|
||||
insert_to_result(st, compare_maps);
|
||||
}
|
||||
}
|
||||
|
||||
while ((st = pop_from_result()))
|
||||
pr_info(" %#llx: %s\n", (unsigned long long)st->addr, st->name);
|
||||
}
|
||||
|
||||
static int dump_info(void)
|
||||
|
|
Loading…
Reference in New Issue