diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2019-07-10 11:57:52 +0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2019-07-10 18:11:04 +0300 |
commit | ed5c0a16feb9f1a4347f109d5e9607f6f38688a0 (patch) | |
tree | 92c4171fe80507c481d540cbc3628a92ada66810 /tools/perf | |
parent | 208032fef13b68cf1eefc945dafb82efc88c6b8f (diff) | |
download | linux-ed5c0a16feb9f1a4347f109d5e9607f6f38688a0.tar.xz |
perf db-export: Pass main_thread to db_export__thread()
Calls to db_export__thread() already have main_thread so there is no
reason to get it again, instead pass it as a parameter. Note that one
difference in this approach is that the main thread is not created if it
does not exist. It is better if it is not created because:
- If main_thread is being traced it will have been created already.
- If it is not being traced, there will be no other information about
it, and it will never get deleted because there will be no EXIT event.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/20190710085810.1650-4-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/db-export.c | 29 | ||||
-rw-r--r-- | tools/perf/util/db-export.h | 3 |
2 files changed, 10 insertions, 22 deletions
diff --git a/tools/perf/util/db-export.c b/tools/perf/util/db-export.c index 8fab57f90cbc..14501236c046 100644 --- a/tools/perf/util/db-export.c +++ b/tools/perf/util/db-export.c @@ -59,9 +59,9 @@ int db_export__machine(struct db_export *dbe, struct machine *machine) } int db_export__thread(struct db_export *dbe, struct thread *thread, - struct machine *machine, struct comm *comm) + struct machine *machine, struct comm *comm, + struct thread *main_thread) { - struct thread *main_thread; u64 main_thread_db_id = 0; int err; @@ -70,28 +70,19 @@ int db_export__thread(struct db_export *dbe, struct thread *thread, thread->db_id = ++dbe->thread_last_db_id; - if (thread->pid_ != -1) { - if (thread->pid_ == thread->tid) { - main_thread = thread; - } else { - main_thread = machine__findnew_thread(machine, - thread->pid_, - thread->pid_); - if (!main_thread) - return -ENOMEM; + if (main_thread) { + if (main_thread != thread) { err = db_export__thread(dbe, main_thread, machine, - comm); + comm, main_thread); if (err) - goto out_put; + return err; if (comm) { err = db_export__comm_thread(dbe, comm, thread); if (err) - goto out_put; + return err; } } main_thread_db_id = main_thread->db_id; - if (main_thread != thread) - thread__put(main_thread); } if (dbe->export_thread) @@ -99,10 +90,6 @@ int db_export__thread(struct db_export *dbe, struct thread *thread, machine); return 0; - -out_put: - thread__put(main_thread); - return err; } /* @@ -324,7 +311,7 @@ int db_export__sample(struct db_export *dbe, union perf_event *event, if (main_thread) comm = machine__thread_exec_comm(al->machine, main_thread); - err = db_export__thread(dbe, thread, al->machine, comm); + err = db_export__thread(dbe, thread, al->machine, comm, main_thread); if (err) goto out_put; diff --git a/tools/perf/util/db-export.h b/tools/perf/util/db-export.h index 148a657b1887..6e267321594c 100644 --- a/tools/perf/util/db-export.h +++ b/tools/perf/util/db-export.h @@ -75,7 +75,8 @@ void db_export__exit(struct db_export *dbe); int db_export__evsel(struct db_export *dbe, struct perf_evsel *evsel); int db_export__machine(struct db_export *dbe, struct machine *machine); int db_export__thread(struct db_export *dbe, struct thread *thread, - struct machine *machine, struct comm *comm); + struct machine *machine, struct comm *comm, + struct thread *main_thread); int db_export__exec_comm(struct db_export *dbe, struct comm *comm, struct thread *main_thread); int db_export__comm_thread(struct db_export *dbe, struct comm *comm, |