diff options
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) { |