From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Jiri Olsa <jolsa@redhat.com>, LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Stephane Eranian <eranian@google.com>,
Andi Kleen <andi@firstfloor.org>, David Ahern <dsahern@gmail.com>
Subject: [PATCH 10/38] perf tools: Pass session arg to perf_event__preprocess_sample()
Date: Tue, 3 Mar 2015 12:07:22 +0900 [thread overview]
Message-ID: <1425352070-1115-11-git-send-email-namhyung@kernel.org> (raw)
In-Reply-To: <1425352070-1115-1-git-send-email-namhyung@kernel.org>
The perf_event__preprocess_sample() translates a given ip into a
matching symbol. To do that, it first finds a corresponding thread
and map in the current thread tree. But for indexed data files, it
needs to find a thread (and map) with slightly different APIs using
timestamp. So it needs a way to know whether this session deals with
an indexed data file or not.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
tools/perf/builtin-annotate.c | 3 ++-
tools/perf/builtin-diff.c | 13 +++++++++----
tools/perf/builtin-mem.c | 6 +++++-
tools/perf/builtin-report.c | 3 ++-
tools/perf/builtin-script.c | 20 +++++++++++---------
tools/perf/builtin-timechart.c | 10 +++++++---
tools/perf/builtin-top.c | 3 ++-
tools/perf/tests/hists_cumulate.c | 2 +-
tools/perf/tests/hists_filter.c | 2 +-
tools/perf/tests/hists_link.c | 4 ++--
tools/perf/tests/hists_output.c | 2 +-
tools/perf/util/event.c | 3 ++-
tools/perf/util/event.h | 4 +++-
13 files changed, 48 insertions(+), 27 deletions(-)
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 747f86103599..b89e4c6ed488 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -85,7 +85,8 @@ static int process_sample_event(struct perf_tool *tool,
struct perf_annotate *ann = container_of(tool, struct perf_annotate, tool);
struct addr_location al;
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ ann->session) < 0) {
pr_warning("problem processing %d event, skipping it.\n",
event->header.type);
return -1;
diff --git a/tools/perf/builtin-diff.c b/tools/perf/builtin-diff.c
index 74aada554b12..3e2229227062 100644
--- a/tools/perf/builtin-diff.c
+++ b/tools/perf/builtin-diff.c
@@ -42,6 +42,7 @@ struct diff_hpp_fmt {
};
struct data__file {
+ struct perf_tool tool;
struct perf_session *session;
struct perf_data_file file;
int idx;
@@ -320,16 +321,18 @@ static int hists__add_entry(struct hists *hists,
return -ENOMEM;
}
-static int diff__process_sample_event(struct perf_tool *tool __maybe_unused,
+static int diff__process_sample_event(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
struct machine *machine)
{
struct addr_location al;
+ struct data__file *d = container_of(tool, struct data__file, tool);
struct hists *hists = evsel__hists(evsel);
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ d->session) < 0) {
pr_warning("problem processing %d event, skipping it.\n",
event->header.type);
return -1;
@@ -740,14 +743,16 @@ static int __cmd_diff(void)
int ret = -EINVAL, i;
data__for_each_file(i, d) {
- d->session = perf_session__new(&d->file, false, &tool);
+ memcpy(&d->tool, &tool, sizeof(tool));
+
+ d->session = perf_session__new(&d->file, false, &d->tool);
if (!d->session) {
pr_err("Failed to open %s\n", d->file.path);
ret = -1;
goto out_delete;
}
- ret = perf_session__process_events(d->session, &tool);
+ ret = perf_session__process_events(d->session, &d->tool);
if (ret) {
pr_err("Failed to process %s\n", d->file.path);
goto out_delete;
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c
index 9b5663950a4d..21d46918860e 100644
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -12,6 +12,7 @@
struct perf_mem {
struct perf_tool tool;
+ struct perf_session *session;
char const *input_name;
bool hide_unresolved;
bool dump_raw;
@@ -66,7 +67,8 @@ dump_raw_samples(struct perf_tool *tool,
struct addr_location al;
const char *fmt;
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ mem->session) < 0) {
fprintf(stderr, "problem processing %d event, skipping it.\n",
event->header.type);
return -1;
@@ -129,6 +131,8 @@ static int report_raw_events(struct perf_mem *mem)
if (session == NULL)
return -1;
+ mem->session = session;
+
if (mem->cpu_list) {
ret = perf_session__cpu_bitmap(session, mem->cpu_list,
mem->cpu_bitmap);
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index 7d132e1e2af9..fe1f34c00c58 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -142,7 +142,8 @@ static int process_sample_event(struct perf_tool *tool,
};
int ret;
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ rep->session) < 0) {
pr_debug("problem processing %d event, skipping it.\n",
event->header.type);
return -1;
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index ce304dfd962a..ab920f8cded6 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -542,13 +542,21 @@ static int cleanup_scripting(void)
return scripting_ops->stop_script();
}
-static int process_sample_event(struct perf_tool *tool __maybe_unused,
+struct perf_script {
+ struct perf_tool tool;
+ struct perf_session *session;
+ bool show_task_events;
+ bool show_mmap_events;
+};
+
+static int process_sample_event(struct perf_tool *tool,
union perf_event *event,
struct perf_sample *sample,
struct perf_evsel *evsel,
struct machine *machine)
{
struct addr_location al;
+ struct perf_script *script = container_of(tool, struct perf_script, tool);
struct thread *thread = machine__findnew_thread(machine, sample->pid,
sample->tid);
@@ -569,7 +577,8 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
return 0;
}
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ script->session) < 0) {
pr_err("problem processing %d event, skipping it.\n",
event->header.type);
return -1;
@@ -586,13 +595,6 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
return 0;
}
-struct perf_script {
- struct perf_tool tool;
- struct perf_session *session;
- bool show_task_events;
- bool show_mmap_events;
-};
-
static int process_attr(struct perf_tool *tool, union perf_event *event,
struct perf_evlist **pevlist)
{
diff --git a/tools/perf/builtin-timechart.c b/tools/perf/builtin-timechart.c
index f3bb1a4bf060..4178727be12c 100644
--- a/tools/perf/builtin-timechart.c
+++ b/tools/perf/builtin-timechart.c
@@ -48,6 +48,7 @@ struct wake_event;
struct timechart {
struct perf_tool tool;
+ struct perf_session *session;
struct per_pid *all_data;
struct power_event *power_events;
struct wake_event *wake_events;
@@ -469,7 +470,8 @@ static void sched_switch(struct timechart *tchart, int cpu, u64 timestamp,
static const char *cat_backtrace(union perf_event *event,
struct perf_sample *sample,
- struct machine *machine)
+ struct machine *machine,
+ struct perf_session *session)
{
struct addr_location al;
unsigned int i;
@@ -488,7 +490,8 @@ static const char *cat_backtrace(union perf_event *event,
if (!chain)
goto exit;
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0) {
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ session) < 0) {
fprintf(stderr, "problem processing %d event, skipping it.\n",
event->header.type);
goto exit;
@@ -567,7 +570,7 @@ static int process_sample_event(struct perf_tool *tool,
if (evsel->handler != NULL) {
tracepoint_handler f = evsel->handler;
return f(tchart, evsel, sample,
- cat_backtrace(event, sample, machine));
+ cat_backtrace(event, sample, machine, tchart->session));
}
return 0;
@@ -1623,6 +1626,7 @@ static int __cmd_timechart(struct timechart *tchart, const char *output_name)
goto out_delete;
}
+ tchart->session = session;
ret = perf_session__process_events(session, &tchart->tool);
if (ret)
goto out_delete;
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 5fb8723c7128..054c56206481 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -723,7 +723,8 @@ static void perf_event__process_sample(struct perf_tool *tool,
if (event->header.misc & PERF_RECORD_MISC_EXACT_IP)
top->exact_samples++;
- if (perf_event__preprocess_sample(event, machine, &al, sample) < 0)
+ if (perf_event__preprocess_sample(event, machine, &al, sample,
+ top->session) < 0)
return;
if (!top->kptr_restrict_warned &&
diff --git a/tools/perf/tests/hists_cumulate.c b/tools/perf/tests/hists_cumulate.c
index 18619966454c..60682e62d9de 100644
--- a/tools/perf/tests/hists_cumulate.c
+++ b/tools/perf/tests/hists_cumulate.c
@@ -101,7 +101,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
sample.callchain = (struct ip_callchain *)fake_callchains[i];
if (perf_event__preprocess_sample(&event, machine, &al,
- &sample) < 0)
+ &sample, NULL) < 0)
goto out;
if (hist_entry_iter__add(&iter, &al, evsel, &sample,
diff --git a/tools/perf/tests/hists_filter.c b/tools/perf/tests/hists_filter.c
index 59e53db7914c..1c4e495d5137 100644
--- a/tools/perf/tests/hists_filter.c
+++ b/tools/perf/tests/hists_filter.c
@@ -78,7 +78,7 @@ static int add_hist_entries(struct perf_evlist *evlist,
sample.ip = fake_samples[i].ip;
if (perf_event__preprocess_sample(&event, machine, &al,
- &sample) < 0)
+ &sample, NULL) < 0)
goto out;
if (hist_entry_iter__add(&iter, &al, evsel, &sample,
diff --git a/tools/perf/tests/hists_link.c b/tools/perf/tests/hists_link.c
index 278ba8344c23..a731a531a3e2 100644
--- a/tools/perf/tests/hists_link.c
+++ b/tools/perf/tests/hists_link.c
@@ -86,7 +86,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
sample.tid = fake_common_samples[k].pid;
sample.ip = fake_common_samples[k].ip;
if (perf_event__preprocess_sample(&event, machine, &al,
- &sample) < 0)
+ &sample, NULL) < 0)
goto out;
he = __hists__add_entry(hists, &al, NULL,
@@ -110,7 +110,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
sample.tid = fake_samples[i][k].pid;
sample.ip = fake_samples[i][k].ip;
if (perf_event__preprocess_sample(&event, machine, &al,
- &sample) < 0)
+ &sample, NULL) < 0)
goto out;
he = __hists__add_entry(hists, &al, NULL,
diff --git a/tools/perf/tests/hists_output.c b/tools/perf/tests/hists_output.c
index b52c9faea224..f4e3286cd496 100644
--- a/tools/perf/tests/hists_output.c
+++ b/tools/perf/tests/hists_output.c
@@ -67,7 +67,7 @@ static int add_hist_entries(struct hists *hists, struct machine *machine)
sample.ip = fake_samples[i].ip;
if (perf_event__preprocess_sample(&event, machine, &al,
- &sample) < 0)
+ &sample, NULL) < 0)
goto out;
if (hist_entry_iter__add(&iter, &al, evsel, &sample,
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index d5efa5092ce6..704ef27cc7c8 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -836,7 +836,8 @@ void thread__find_addr_location(struct thread *thread,
int perf_event__preprocess_sample(const union perf_event *event,
struct machine *machine,
struct addr_location *al,
- struct perf_sample *sample)
+ struct perf_sample *sample,
+ struct perf_session *session __maybe_unused)
{
u8 cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
struct thread *thread = machine__findnew_thread(machine, sample->pid,
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h
index c4ffe2bd0738..19814f70292b 100644
--- a/tools/perf/util/event.h
+++ b/tools/perf/util/event.h
@@ -353,11 +353,13 @@ int perf_event__process(struct perf_tool *tool,
struct machine *machine);
struct addr_location;
+struct perf_session;
int perf_event__preprocess_sample(const union perf_event *event,
struct machine *machine,
struct addr_location *al,
- struct perf_sample *sample);
+ struct perf_sample *sample,
+ struct perf_session *session);
struct thread;
--
2.2.2
next prev parent reply other threads:[~2015-03-03 3:21 UTC|newest]
Thread overview: 221+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-03 3:07 [RFC/PATCHSET 00/38] perf tools: Speed-up perf report by using multi thread (v3) Namhyung Kim
2015-03-03 3:07 ` [PATCH 01/38] perf tools: Use a software dummy event to track task/mmap events Namhyung Kim
2015-03-03 3:07 ` [PATCH 02/38] perf tools: Add rm_rf() utility function Namhyung Kim
2015-03-03 3:07 ` [PATCH 03/38] perf tools: Introduce copyfile_offset() function Namhyung Kim
2015-03-04 14:58 ` Jiri Olsa
2015-03-03 3:07 ` [PATCH 04/38] perf tools: Create separate mmap for dummy tracking event Namhyung Kim
2015-03-03 3:07 ` [PATCH 05/38] perf tools: Introduce perf_evlist__mmap_track() Namhyung Kim
2015-03-03 3:07 ` [PATCH 06/38] perf tools: Add HEADER_DATA_INDEX feature Namhyung Kim
2015-03-03 3:07 ` [PATCH 07/38] perf tools: Handle indexed data file properly Namhyung Kim
2015-03-04 16:19 ` Jiri Olsa
2015-03-06 4:17 ` Namhyung Kim
2015-03-03 3:07 ` [PATCH 08/38] perf record: Add --index option for building index table Namhyung Kim
2015-03-05 7:56 ` Jiri Olsa
2015-03-06 4:19 ` Namhyung Kim
2015-03-03 3:07 ` [PATCH 09/38] perf report: Skip dummy tracking event Namhyung Kim
2015-03-03 3:07 ` Namhyung Kim [this message]
2015-03-03 13:59 ` [PATCH 10/38] perf tools: Pass session arg to perf_event__preprocess_sample() Arnaldo Carvalho de Melo
2015-03-03 14:18 ` Namhyung Kim
2015-03-03 3:07 ` [PATCH 11/38] perf script: Pass session arg to ->process_event callback Namhyung Kim
2015-03-03 3:07 ` [PATCH 12/38] perf tools: Introduce thread__comm_time() helpers Namhyung Kim
2015-03-03 16:28 ` Frederic Weisbecker
2015-03-04 0:02 ` Namhyung Kim
2015-03-05 16:08 ` Frederic Weisbecker
2015-03-06 4:38 ` Namhyung Kim
2015-03-06 12:48 ` Arnaldo Carvalho de Melo
2015-03-10 6:55 ` Namhyung Kim
2015-03-03 3:07 ` [PATCH 13/38] perf tools: Add a test case for thread comm handling Namhyung Kim
2015-03-03 3:07 ` [PATCH 14/38] perf tools: Use thread__comm_time() when adding hist entries Namhyung Kim
2015-03-03 3:07 ` [PATCH 15/38] perf tools: Convert dead thread list into rbtree Namhyung Kim
2015-03-03 3:07 ` [PATCH 16/38] perf tools: Introduce machine__find*_thread_time() Namhyung Kim
2015-03-03 3:07 ` [PATCH 17/38] perf tools: Add a test case for timed thread handling Namhyung Kim
2015-03-03 3:07 ` [PATCH 18/38] perf tools: Reducing arguments of hist_entry_iter__add() Namhyung Kim
2015-03-03 3:07 ` [PATCH 19/38] perf tools: Pass session to hist_entry_iter struct Namhyung Kim
2015-03-03 3:07 ` [PATCH 20/38] perf tools: Maintain map groups list in a leader thread Namhyung Kim
2015-03-03 3:07 ` [PATCH 21/38] perf tools: Introduce session__find_addr_location() and friends Namhyung Kim
2015-03-03 3:07 ` [PATCH 22/38] perf callchain: Use " Namhyung Kim
2015-03-03 14:01 ` Arnaldo Carvalho de Melo
2015-03-03 3:07 ` [PATCH 23/38] perf tools: Add a test case for timed map groups handling Namhyung Kim
2015-03-03 3:07 ` [PATCH 24/38] perf tools: Protect dso symbol loading using a mutex Namhyung Kim
2015-03-03 3:07 ` [PATCH 25/38] perf tools: Protect dso cache tree using dso->lock Namhyung Kim
2015-03-03 3:07 ` [PATCH 26/38] perf tools: Protect dso cache fd with a mutex Namhyung Kim
2015-03-03 3:07 ` [PATCH 27/38] perf callchain: Maintain libunwind's address space in map_groups Namhyung Kim
2015-03-03 3:07 ` [PATCH 28/38] perf tools: Add dso__data_get/put_fd() Namhyung Kim
2015-03-03 3:07 ` [PATCH 29/38] perf session: Pass struct events stats to event processing functions Namhyung Kim
2015-03-03 3:07 ` [PATCH 30/38] perf hists: Pass hists struct to hist_entry_iter struct Namhyung Kim
2015-03-03 3:07 ` [PATCH 31/38] perf tools: Move BUILD_ID_SIZE definition to perf.h Namhyung Kim
2015-03-03 3:07 ` [PATCH 32/38] perf report: Parallelize perf report using multi-thread Namhyung Kim
2015-03-03 3:07 ` [PATCH 33/38] perf tools: Add missing_threads rb tree Namhyung Kim
2015-03-03 3:07 ` [PATCH 34/38] perf record: Synthesize COMM event for a command line workload Namhyung Kim
2015-03-03 3:07 ` [PATCH 35/38] perf tools: Fix progress ui to support multi thread Namhyung Kim
2015-03-03 3:07 ` [PATCH 36/38] perf report: Add --multi-thread option and config item Namhyung Kim
2015-03-03 3:07 ` [PATCH 37/38] perf session: Handle index files generally Namhyung Kim
2015-03-03 3:07 ` [PATCH 38/38] perf data: Implement 'index' subcommand Namhyung Kim
-- strict thread matches above, loose matches on Subject: below --
2015-05-18 0:30 [RFC/PATCHSET 00/40] perf tools: Speed-up perf report by using multi thread (v4) Namhyung Kim
2015-05-18 0:30 ` [PATCH 01/40] perf tools: Use a software dummy event to track task/mmap events Namhyung Kim
2015-05-18 0:30 ` [PATCH 02/40] perf tools: Add rm_rf() utility function Namhyung Kim
2015-05-18 0:30 ` [PATCH 03/40] perf tools: Introduce copyfile_offset() function Namhyung Kim
2015-05-18 12:57 ` Arnaldo Carvalho de Melo
2015-05-19 6:20 ` Namhyung Kim
2015-05-20 12:24 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-05-18 0:30 ` [PATCH 04/40] perf tools: Create separate mmap for dummy tracking event Namhyung Kim
2015-05-18 18:07 ` Jiri Olsa
2015-05-19 6:24 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 05/40] perf tools: Introduce perf_evlist__mmap_track() Namhyung Kim
2015-05-18 18:09 ` Jiri Olsa
2015-05-19 6:28 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 06/40] perf tools: Add HEADER_DATA_INDEX feature Namhyung Kim
2015-05-18 18:17 ` Jiri Olsa
2015-05-19 6:34 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 07/40] perf tools: Handle indexed data file properly Namhyung Kim
2015-05-18 18:37 ` Jiri Olsa
2015-05-19 6:40 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 08/40] perf record: Add --index option for building index table Namhyung Kim
2015-05-18 0:30 ` [PATCH 09/40] perf report: Skip dummy tracking event Namhyung Kim
2015-05-18 0:30 ` [PATCH 10/40] perf tools: Introduce thread__comm(_str)_by_time() helpers Namhyung Kim
2015-05-18 0:30 ` [PATCH 11/40] perf tools: Add a test case for thread comm handling Namhyung Kim
2015-05-18 19:29 ` Jiri Olsa
2015-05-19 6:42 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 12/40] perf tools: Use thread__comm_by_time() when adding hist entries Namhyung Kim
2015-05-18 0:30 ` [PATCH 13/40] perf tools: Convert dead thread list into rbtree Namhyung Kim
2015-05-18 19:34 ` Jiri Olsa
2015-05-19 6:45 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 14/40] perf tools: Introduce machine__find*_thread_by_time() Namhyung Kim
2015-05-18 19:50 ` Jiri Olsa
2015-05-18 19:56 ` Jiri Olsa
2015-05-19 6:57 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 15/40] perf tools: Add a test case for timed thread handling Namhyung Kim
2015-05-18 0:30 ` [PATCH 16/40] perf tools: Reducing arguments of hist_entry_iter__add() Namhyung Kim
2015-05-18 12:55 ` Arnaldo Carvalho de Melo
2015-05-19 7:01 ` Namhyung Kim
2015-05-19 8:04 ` [PATCH] " Namhyung Kim
2015-05-19 14:03 ` Arnaldo Carvalho de Melo
2015-05-27 16:47 ` [tip:perf/core] perf hists: " tip-bot for Namhyung Kim
2015-05-18 0:30 ` [PATCH 17/40] perf tools: Maintain map groups list in a leader thread Namhyung Kim
2015-05-18 0:30 ` [PATCH 18/40] perf tools: Introduce thread__find_addr_location_by_time() and friends Namhyung Kim
2015-05-18 0:30 ` [PATCH 19/40] perf callchain: Use " Namhyung Kim
2015-05-18 0:30 ` [PATCH 20/40] perf tools: Add a test case for timed map groups handling Namhyung Kim
2015-05-18 0:30 ` [PATCH 21/40] perf tools: Save timestamp of a map creation Namhyung Kim
2015-05-18 0:30 ` [PATCH 22/40] perf tools: Introduce map_groups__{insert,find}_by_time() Namhyung Kim
2015-05-18 0:30 ` [PATCH 23/40] perf tools: Use map_groups__find_addr_by_time() Namhyung Kim
2015-05-18 0:30 ` [PATCH 24/40] perf tools: Add testcase for managing maps with time Namhyung Kim
2015-05-18 0:30 ` [PATCH 25/40] perf tools: Protect dso symbol loading using a mutex Namhyung Kim
2015-05-20 12:25 ` [tip:perf/core] perf symbols: " tip-bot for Namhyung Kim
2015-05-18 0:30 ` [PATCH 26/40] perf tools: Protect dso cache tree using dso->lock Namhyung Kim
2015-05-20 12:25 ` [tip:perf/core] perf symbols: Protect dso cache tree using dso-> lock tip-bot for Namhyung Kim
2015-05-18 0:30 ` [PATCH 27/40] perf tools: Protect dso cache fd with a mutex Namhyung Kim
2015-05-20 12:25 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-05-18 0:30 ` [PATCH 28/40] perf callchain: Maintain libunwind's address space in map_groups Namhyung Kim
2015-05-18 0:30 ` [PATCH 29/40] perf tools: Add dso__data_get/put_fd() Namhyung Kim
2015-05-18 0:30 ` [PATCH 30/40] perf session: Pass struct events stats to event processing functions Namhyung Kim
2015-05-18 0:30 ` [PATCH 31/40] perf hists: Pass hists struct to hist_entry_iter struct Namhyung Kim
2015-05-18 0:30 ` [PATCH 32/40] perf tools: Move BUILD_ID_SIZE definition to perf.h Namhyung Kim
2015-05-18 0:30 ` [PATCH 33/40] perf session: Separate struct machines from session Namhyung Kim
2015-05-18 12:52 ` Arnaldo Carvalho de Melo
2015-05-19 7:28 ` Namhyung Kim
2015-05-19 22:46 ` Arnaldo Carvalho de Melo
2015-05-19 23:58 ` Namhyung Kim
2015-05-28 2:39 ` [RFC 0/2] " Namhyung Kim
2015-05-28 2:39 ` [PATCH 1/2] perf tools: Introduce machines__new/delete() Namhyung Kim
2015-05-28 2:39 ` [PATCH 2/2] perf session: Separate struct machines from session Namhyung Kim
2015-05-18 0:30 ` [PATCH 34/40] perf report: Parallelize perf report using multi-thread Namhyung Kim
2015-05-19 10:12 ` Jiri Olsa
2015-05-19 14:58 ` Namhyung Kim
2015-05-18 0:30 ` [PATCH 35/40] perf record: Synthesize COMM event for a command line workload Namhyung Kim
2015-05-18 12:45 ` Arnaldo Carvalho de Melo
2015-05-19 7:46 ` Namhyung Kim
2015-05-19 14:02 ` Arnaldo Carvalho de Melo
2015-05-19 15:12 ` Namhyung Kim
2015-05-19 16:30 ` Arnaldo Carvalho de Melo
2015-05-19 19:49 ` Jiri Olsa
2015-05-19 20:18 ` Arnaldo Carvalho de Melo
2015-05-19 23:56 ` Namhyung Kim
2015-05-20 0:22 ` Arnaldo Carvalho de Melo
2015-05-20 0:56 ` Namhyung Kim
2015-05-20 1:16 ` Arnaldo Carvalho de Melo
2015-05-18 0:30 ` [PATCH 36/40] perf tools: Fix progress ui to support multi thread Namhyung Kim
2015-05-18 0:30 ` [PATCH 37/40] perf report: Add --multi-thread option and config item Namhyung Kim
2015-05-18 0:30 ` [PATCH 38/40] perf session: Handle index files generally Namhyung Kim
2015-05-19 22:27 ` David Ahern
2015-05-20 0:05 ` Namhyung Kim
2015-05-20 7:20 ` [PATCH 41/40] perf report: Add --num-thread option to control number of thread Namhyung Kim
2015-05-18 0:30 ` [PATCH 39/40] perf data: Implement 'index' subcommand Namhyung Kim
2015-05-18 0:30 ` [PATCH Not-for-merge 40/40] perf tools: Disable thread refcount due to bug Namhyung Kim
2015-05-18 1:23 ` Arnaldo Carvalho de Melo
2015-05-18 12:21 ` Namhyung Kim
2015-05-18 12:30 ` Arnaldo Carvalho de Melo
2015-01-29 8:06 [RFC/PATCHSET 00/42] perf tools: Speed-up perf report by using multi thread (v2) Namhyung Kim
2015-01-29 8:06 ` [PATCH 01/42] perf tools: Support to read compressed module from build-id cache Namhyung Kim
2015-01-30 14:32 ` Jiri Olsa
2015-02-02 15:03 ` Namhyung Kim
2015-01-30 18:33 ` [tip:perf/core] perf symbols: " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 02/42] perf tools: Do not use __perf_session__process_events() directly Namhyung Kim
2015-01-30 18:32 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 03/42] perf record: Show precise number of samples Namhyung Kim
2015-01-30 18:32 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 04/42] perf header: Set header version correctly Namhyung Kim
2015-01-30 18:33 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 05/42] perf tools: Set attr.task bit for a tracking event Namhyung Kim
2015-01-30 18:33 ` [tip:perf/core] perf evsel: " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 06/42] perf tools: Use a software dummy event to track task/mmap events Namhyung Kim
2015-01-29 8:06 ` [PATCH 07/42] perf tools: Use perf_data_file__fd() consistently Namhyung Kim
2015-01-30 18:33 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 08/42] perf tools: Add rm_rf() utility function Namhyung Kim
2015-01-30 15:02 ` Jiri Olsa
2015-05-20 12:24 ` [tip:perf/core] " tip-bot for Namhyung Kim
2015-01-29 8:06 ` [PATCH 09/42] perf tools: Introduce copyfile_offset() function Namhyung Kim
2015-01-29 8:06 ` [PATCH 10/42] perf tools: Create separate mmap for dummy tracking event Namhyung Kim
2015-01-29 8:06 ` [PATCH 11/42] perf tools: Introduce perf_evlist__mmap_track() Namhyung Kim
2015-01-29 8:06 ` [PATCH 12/42] perf tools: Add HEADER_DATA_INDEX feature Namhyung Kim
2015-01-29 8:06 ` [PATCH 13/42] perf tools: Handle indexed data file properly Namhyung Kim
2015-01-29 8:06 ` [PATCH 14/42] perf record: Add --index option for building index table Namhyung Kim
2015-02-01 18:06 ` Jiri Olsa
2015-02-02 8:34 ` Adrian Hunter
2015-02-02 9:15 ` Jiri Olsa
2015-02-02 9:52 ` Adrian Hunter
2015-02-02 10:05 ` Jiri Olsa
2015-02-02 12:07 ` Adrian Hunter
2015-02-02 12:13 ` Jiri Olsa
2015-02-02 14:56 ` Namhyung Kim
2015-02-02 17:30 ` Jiri Olsa
2015-02-03 8:42 ` Adrian Hunter
2015-01-29 8:06 ` [PATCH 15/42] perf report: Skip dummy tracking event Namhyung Kim
2015-01-29 8:06 ` [PATCH 16/42] perf tools: Pass session arg to perf_event__preprocess_sample() Namhyung Kim
2015-01-29 8:06 ` [PATCH 17/42] perf script: Pass session arg to ->process_event callback Namhyung Kim
2015-01-29 8:06 ` [PATCH 18/42] perf tools: Introduce thread__comm_time() helpers Namhyung Kim
2015-01-29 8:07 ` [PATCH 19/42] perf tools: Add a test case for thread comm handling Namhyung Kim
2015-01-29 8:07 ` [PATCH 20/42] perf tools: Use thread__comm_time() when adding hist entries Namhyung Kim
2015-01-29 8:07 ` [PATCH 21/42] perf tools: Convert dead thread list into rbtree Namhyung Kim
2015-01-29 8:07 ` [PATCH 22/42] perf tools: Introduce machine__find*_thread_time() Namhyung Kim
2015-01-29 8:07 ` [PATCH 23/42] perf tools: Add a test case for timed thread handling Namhyung Kim
2015-01-29 8:07 ` [PATCH 24/42] perf tools: Maintain map groups list in a leader thread Namhyung Kim
2015-01-29 8:07 ` [PATCH 25/42] perf tools: Introduce thread__find_addr_location_time() and friends Namhyung Kim
2015-01-29 8:07 ` [PATCH 26/42] perf tools: Add a test case for timed map groups handling Namhyung Kim
2015-01-29 8:07 ` [PATCH 27/42] perf tools: Protect dso symbol loading using a mutex Namhyung Kim
2015-01-29 12:34 ` Arnaldo Carvalho de Melo
2015-01-29 12:48 ` Namhyung Kim
2015-01-29 8:07 ` [PATCH 28/42] perf tools: Protect dso cache tree using dso->lock Namhyung Kim
2015-01-29 8:07 ` [PATCH 29/42] perf tools: Protect dso cache fd with a mutex Namhyung Kim
2015-01-29 12:31 ` Arnaldo Carvalho de Melo
2015-01-29 13:19 ` Namhyung Kim
2015-01-29 16:23 ` Arnaldo Carvalho de Melo
2015-01-30 0:51 ` Namhyung Kim
2015-01-29 8:07 ` [PATCH 30/42] perf session: Pass struct events stats to event processing functions Namhyung Kim
2015-01-29 8:07 ` [PATCH 31/42] perf hists: Pass hists struct to hist_entry_iter functions Namhyung Kim
2015-01-29 8:07 ` [PATCH 32/42] perf tools: Move BUILD_ID_SIZE definition to perf.h Namhyung Kim
2015-01-29 8:07 ` [PATCH 33/42] perf report: Parallelize perf report using multi-thread Namhyung Kim
2015-01-29 8:07 ` [PATCH 34/42] perf tools: Add missing_threads rb tree Namhyung Kim
2015-01-29 8:07 ` [PATCH 35/42] perf record: Synthesize COMM event for a command line workload Namhyung Kim
2015-01-29 8:07 ` [PATCH 36/42] perf tools: Fix progress ui to support multi thread Namhyung Kim
2015-01-29 8:07 ` [PATCH 37/42] perf report: Add --multi-thread option and config item Namhyung Kim
2015-01-29 8:07 ` [PATCH 38/42] perf session: Handle index files generally Namhyung Kim
2015-01-29 8:07 ` [PATCH 39/42] perf tools: Convert lseek + read to pread Namhyung Kim
2015-01-30 18:34 ` [tip:perf/core] perf symbols: " tip-bot for Namhyung Kim
2015-01-29 8:07 ` [PATCH 40/42] perf callchain: Save eh/debug frame offset for dwarf unwind Namhyung Kim
2015-01-29 12:38 ` Arnaldo Carvalho de Melo
2015-01-29 13:23 ` Namhyung Kim
2015-01-29 19:22 ` Arnaldo Carvalho de Melo
2015-01-30 18:32 ` [tip:perf/core] perf callchain: Cache eh/ debug " tip-bot for Namhyung Kim
2015-01-29 8:07 ` [PATCH 41/42] perf tools: Add new perf data command Namhyung Kim
2015-01-29 8:07 ` [PATCH 42/42] perf data: Implement 'index' subcommand Namhyung Kim
2015-01-29 19:56 ` [RFC/PATCHSET 00/42] perf tools: Speed-up perf report by using multi thread (v2) Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1425352070-1115-11-git-send-email-namhyung@kernel.org \
--to=namhyung@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).