aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-record.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2010-01-14 20:45:28 -0500
committerIngo Molnar <mingo@elte.hu>2010-01-16 04:58:48 -0500
commit18c3daa4961b9fa1f2db0711d93c0acf0c39fd12 (patch)
tree03169979a334fa753e740d4638d62f9747ba3f72 /tools/perf/builtin-record.c
parentcf4e5b0838e822dd404638ad00d35b63fffe8191 (diff)
perf record: Encode the domain while synthesizing MMAP events
In the past 'perf record' had to process only userspace MMAP events, the ones generated in the kernel, but after we reused the MMAP events to encode the module mapings we ended up adding them first to the list of userspace DSOs (dsos__user) and to the kernel one (dsos__kernel). Fix this by encoding the header.misc field and then using it, like other parts to decide the right DSOs list to insert/find. The gotcha here is that since the kernel puts zero in .misc, which isn't PERF_RECORD_MISC_KERNEL (1 << 1), to differentiate, we put 1 in .misc. 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: <1263519930-22803-2-git-send-email-acme@infradead.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r--tools/perf/builtin-record.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index c130df2676f1..614fa9a4c67c 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -117,8 +117,12 @@ static void write_event(event_t *buf, size_t size)
117 * Add it to the list of DSOs, so that when we finish this 117 * Add it to the list of DSOs, so that when we finish this
118 * record session we can pick the available build-ids. 118 * record session we can pick the available build-ids.
119 */ 119 */
120 if (buf->header.type == PERF_RECORD_MMAP) 120 if (buf->header.type == PERF_RECORD_MMAP) {
121 dsos__findnew(buf->mmap.filename); 121 struct list_head *head = &dsos__user;
122 if (buf->mmap.header.misc == 1)
123 head = &dsos__kernel;
124 __dsos__findnew(head, buf->mmap.filename);
125 }
122 126
123 write_output(buf, size); 127 write_output(buf, size);
124} 128}