diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-01-07 16:59:39 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-01-13 04:09:16 -0500 |
commit | a89e5abe3efcc7facc666d3985769278937f86b0 (patch) | |
tree | 4aa271d7d1d751ff842bb23874fcb91b384343cc /tools/perf/util/header.c | |
parent | fed5af61dc0d9402d26e7fb8fb9731a60a8e05ca (diff) |
perf symbols: Record the domain of DSOs in HEADER_BUILD_ID header table
So that we can restore them to the right DSO list (either
dsos__kernel or dsos__user).
We do that just like the kernel does for the other events,
encoding PERF_RECORD_MISC_{KERNEL,USER} in perf_event_header.
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: <1262901583-8074-2-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/header.c')
-rw-r--r-- | tools/perf/util/header.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 942f7da8bf84..ec96321eb9e4 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
@@ -193,7 +193,7 @@ static int write_padded(int fd, const void *bf, size_t count, | |||
193 | continue; \ | 193 | continue; \ |
194 | else | 194 | else |
195 | 195 | ||
196 | static int __dsos__write_buildid_table(struct list_head *head, int fd) | 196 | static int __dsos__write_buildid_table(struct list_head *head, u16 misc, int fd) |
197 | { | 197 | { |
198 | struct dso *pos; | 198 | struct dso *pos; |
199 | 199 | ||
@@ -205,6 +205,7 @@ static int __dsos__write_buildid_table(struct list_head *head, int fd) | |||
205 | len = ALIGN(len, NAME_ALIGN); | 205 | len = ALIGN(len, NAME_ALIGN); |
206 | memset(&b, 0, sizeof(b)); | 206 | memset(&b, 0, sizeof(b)); |
207 | memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id)); | 207 | memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id)); |
208 | b.header.misc = misc; | ||
208 | b.header.size = sizeof(b) + len; | 209 | b.header.size = sizeof(b) + len; |
209 | err = do_write(fd, &b, sizeof(b)); | 210 | err = do_write(fd, &b, sizeof(b)); |
210 | if (err < 0) | 211 | if (err < 0) |
@@ -220,9 +221,11 @@ static int __dsos__write_buildid_table(struct list_head *head, int fd) | |||
220 | 221 | ||
221 | static int dsos__write_buildid_table(int fd) | 222 | static int dsos__write_buildid_table(int fd) |
222 | { | 223 | { |
223 | int err = __dsos__write_buildid_table(&dsos__kernel, fd); | 224 | int err = __dsos__write_buildid_table(&dsos__kernel, |
225 | PERF_RECORD_MISC_KERNEL, fd); | ||
224 | if (err == 0) | 226 | if (err == 0) |
225 | err = __dsos__write_buildid_table(&dsos__user, fd); | 227 | err = __dsos__write_buildid_table(&dsos__user, |
228 | PERF_RECORD_MISC_USER, fd); | ||
226 | return err; | 229 | return err; |
227 | } | 230 | } |
228 | 231 | ||