diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-18 19:52:46 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-03-18 19:52:46 -0400 |
commit | f82c37e7bb4c4d9b6a476c642d5c2d2efbd6f240 (patch) | |
tree | 09fc553c2fb6f527962048d139159dc139e04afc /tools/perf/builtin-record.c | |
parent | c6b9e73f2fee8bb86058f296de808b326473456b (diff) | |
parent | dcd5c1662db59a6b82942f47fb6ac9dd63f6d3dd (diff) |
Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (35 commits)
perf: Fix unexported generic perf_arch_fetch_caller_regs
perf record: Don't try to find buildids in a zero sized file
perf: export perf_trace_regs and perf_arch_fetch_caller_regs
perf, x86: Fix hw_perf_enable() event assignment
perf, ppc: Fix compile error due to new cpu notifiers
perf: Make the install relative to DESTDIR if specified
kprobes: Calculate the index correctly when freeing the out-of-line execution slot
perf tools: Fix sparse CPU numbering related bugs
perf_event: Fix oops triggered by cpu offline/online
perf: Drop the obsolete profile naming for trace events
perf: Take a hot regs snapshot for trace events
perf: Introduce new perf_fetch_caller_regs() for hot regs snapshot
perf/x86-64: Use frame pointer to walk on irq and process stacks
lockdep: Move lock events under lockdep recursion protection
perf report: Print the map table just after samples for which no map was found
perf report: Add multiple event support
perf session: Change perf_session post processing functions to take histogram tree
perf session: Add storage for seperating event types in report
perf session: Change add_hist_entry to take the tree root instead of session
perf record: Add ID and to recorded event data when recording multiple events
...
Diffstat (limited to 'tools/perf/builtin-record.c')
-rw-r--r-- | tools/perf/builtin-record.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 771533ced6a8..3b8b6387c47c 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "util/debug.h" | 22 | #include "util/debug.h" |
23 | #include "util/session.h" | 23 | #include "util/session.h" |
24 | #include "util/symbol.h" | 24 | #include "util/symbol.h" |
25 | #include "util/cpumap.h" | ||
25 | 26 | ||
26 | #include <unistd.h> | 27 | #include <unistd.h> |
27 | #include <sched.h> | 28 | #include <sched.h> |
@@ -244,6 +245,9 @@ static void create_counter(int counter, int cpu, pid_t pid) | |||
244 | 245 | ||
245 | attr->sample_type |= PERF_SAMPLE_IP | PERF_SAMPLE_TID; | 246 | attr->sample_type |= PERF_SAMPLE_IP | PERF_SAMPLE_TID; |
246 | 247 | ||
248 | if (nr_counters > 1) | ||
249 | attr->sample_type |= PERF_SAMPLE_ID; | ||
250 | |||
247 | if (freq) { | 251 | if (freq) { |
248 | attr->sample_type |= PERF_SAMPLE_PERIOD; | 252 | attr->sample_type |= PERF_SAMPLE_PERIOD; |
249 | attr->freq = 1; | 253 | attr->freq = 1; |
@@ -391,6 +395,9 @@ static int process_buildids(void) | |||
391 | { | 395 | { |
392 | u64 size = lseek(output, 0, SEEK_CUR); | 396 | u64 size = lseek(output, 0, SEEK_CUR); |
393 | 397 | ||
398 | if (size == 0) | ||
399 | return 0; | ||
400 | |||
394 | session->fd = output; | 401 | session->fd = output; |
395 | return __perf_session__process_events(session, post_processing_offset, | 402 | return __perf_session__process_events(session, post_processing_offset, |
396 | size - post_processing_offset, | 403 | size - post_processing_offset, |
@@ -418,9 +425,6 @@ static int __cmd_record(int argc, const char **argv) | |||
418 | char buf; | 425 | char buf; |
419 | 426 | ||
420 | page_size = sysconf(_SC_PAGE_SIZE); | 427 | page_size = sysconf(_SC_PAGE_SIZE); |
421 | nr_cpus = sysconf(_SC_NPROCESSORS_ONLN); | ||
422 | assert(nr_cpus <= MAX_NR_CPUS); | ||
423 | assert(nr_cpus >= 0); | ||
424 | 428 | ||
425 | atexit(sig_atexit); | 429 | atexit(sig_atexit); |
426 | signal(SIGCHLD, sig_handler); | 430 | signal(SIGCHLD, sig_handler); |
@@ -544,8 +548,9 @@ static int __cmd_record(int argc, const char **argv) | |||
544 | if ((!system_wide && !inherit) || profile_cpu != -1) { | 548 | if ((!system_wide && !inherit) || profile_cpu != -1) { |
545 | open_counters(profile_cpu, target_pid); | 549 | open_counters(profile_cpu, target_pid); |
546 | } else { | 550 | } else { |
551 | nr_cpus = read_cpu_map(); | ||
547 | for (i = 0; i < nr_cpus; i++) | 552 | for (i = 0; i < nr_cpus; i++) |
548 | open_counters(i, target_pid); | 553 | open_counters(cpumap[i], target_pid); |
549 | } | 554 | } |
550 | 555 | ||
551 | if (file_new) { | 556 | if (file_new) { |