mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
perf tools: Introduce perf_session class
That does all the initialization boilerplate, opening the file, reading the header, checking if it is valid, etc. And that will as well have the threads list, kmap (now) global variable, etc, so that we can handle two (or more) perf.data files describing sessions to compare. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frédéric Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <1260573842-19720-1-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
ea08d8cbd1
commit
94c744b6c0
15 changed files with 206 additions and 181 deletions
|
@ -25,6 +25,7 @@
|
|||
#include "util/thread.h"
|
||||
#include "util/sort.h"
|
||||
#include "util/hist.h"
|
||||
#include "util/session.h"
|
||||
#include "util/data_map.h"
|
||||
|
||||
static char const *input_name = "perf.data";
|
||||
|
@ -462,21 +463,23 @@ static struct perf_file_handler file_handler = {
|
|||
|
||||
static int __cmd_annotate(void)
|
||||
{
|
||||
struct perf_header *header;
|
||||
struct perf_session *session = perf_session__new(input_name, O_RDONLY, force);
|
||||
struct thread *idle;
|
||||
int ret;
|
||||
|
||||
if (session == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
idle = register_idle_thread();
|
||||
register_perf_file_handler(&file_handler);
|
||||
|
||||
ret = mmap_dispatch_perf_file(&header, input_name, 0, 0,
|
||||
&event__cwdlen, &event__cwd);
|
||||
ret = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd);
|
||||
if (ret)
|
||||
return ret;
|
||||
goto out_delete;
|
||||
|
||||
if (dump_trace) {
|
||||
event__print_totals();
|
||||
return 0;
|
||||
goto out_delete;
|
||||
}
|
||||
|
||||
if (verbose > 3)
|
||||
|
@ -489,6 +492,8 @@ static int __cmd_annotate(void)
|
|||
output__resort(event__total[0]);
|
||||
|
||||
find_annotations();
|
||||
out_delete:
|
||||
perf_session__delete(session);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue