perf session: Pass the perf_session to the event handling operations
They will need it to get the right threads list, etc. 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: <1260741029-4430-1-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:

committed by
Ingo Molnar

parent
2cd9046cc5
commit
d8f66248d6
@@ -62,10 +62,9 @@ static int cleanup_scripting(void)
|
||||
|
||||
static char const *input_name = "perf.data";
|
||||
|
||||
static struct perf_session *session;
|
||||
static u64 sample_type;
|
||||
|
||||
static int process_sample_event(event_t *event)
|
||||
static int process_sample_event(event_t *event, struct perf_session *session __used)
|
||||
{
|
||||
struct sample_data data;
|
||||
struct thread *thread;
|
||||
@@ -125,20 +124,12 @@ static struct perf_file_handler file_handler = {
|
||||
.sample_type_check = sample_type_check,
|
||||
};
|
||||
|
||||
static int __cmd_trace(void)
|
||||
static int __cmd_trace(struct perf_session *session)
|
||||
{
|
||||
int err;
|
||||
|
||||
session = perf_session__new(input_name, O_RDONLY, 0);
|
||||
if (session == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
register_idle_thread();
|
||||
register_perf_file_handler(&file_handler);
|
||||
|
||||
err = perf_session__process_events(session, 0, &event__cwdlen, &event__cwd);
|
||||
perf_session__delete(session);
|
||||
return err;
|
||||
return perf_session__process_events(session, 0, &event__cwdlen, &event__cwd);
|
||||
}
|
||||
|
||||
struct script_spec {
|
||||
@@ -313,6 +304,7 @@ static const struct option options[] = {
|
||||
int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
||||
{
|
||||
int err;
|
||||
struct perf_session *session;
|
||||
|
||||
symbol__init(0);
|
||||
|
||||
@@ -330,6 +322,10 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
||||
|
||||
setup_pager();
|
||||
|
||||
session = perf_session__new(input_name, O_RDONLY, 0);
|
||||
if (session == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
if (generate_script_lang) {
|
||||
struct stat perf_stat;
|
||||
|
||||
@@ -367,8 +363,9 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used)
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = __cmd_trace();
|
||||
err = __cmd_trace(session);
|
||||
|
||||
perf_session__delete(session);
|
||||
cleanup_scripting();
|
||||
out:
|
||||
return err;
|
||||
|
Reference in New Issue
Block a user