diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-17 12:56:40 -0500 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-02-17 12:56:55 -0500 |
| commit | 66b0835e2bb3d345f060a47bb8c8f883bd25ec2b (patch) | |
| tree | d1fc390dfa58f131df908267d87ef99d4522a596 /tools | |
| parent | 479b46b5599b1e610630d7332e168c1f9c4ee0b4 (diff) | |
| parent | 85e2efbb1db9a18d218006706d6e4fbeb0216213 (diff) | |
Merge 2.6.38-rc5 into usb-next
This is needed to resolve some merge conflicts that were found
in the USB host controller patches, and reported by Stephen Rothwell.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'tools')
29 files changed, 255 insertions, 215 deletions
diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 2b5387d53ba5..7141c42e1469 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
| @@ -204,13 +204,11 @@ EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow | |||
| 204 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self | 204 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Winit-self |
| 205 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked | 205 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wpacked |
| 206 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls | 206 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wredundant-decls |
| 207 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstack-protector | ||
| 208 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 | 207 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-aliasing=3 |
| 209 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default | 208 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-default |
| 210 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum | 209 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wswitch-enum |
| 211 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers | 210 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wno-system-headers |
| 212 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef | 211 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wundef |
| 213 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wvolatile-register-var | ||
| 214 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings | 212 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wwrite-strings |
| 215 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast | 213 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wbad-function-cast |
| 216 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations | 214 | EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wmissing-declarations |
| @@ -294,6 +292,13 @@ ifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -fstack-protector-all),y) | |||
| 294 | CFLAGS := $(CFLAGS) -fstack-protector-all | 292 | CFLAGS := $(CFLAGS) -fstack-protector-all |
| 295 | endif | 293 | endif |
| 296 | 294 | ||
| 295 | ifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -Wstack-protector),y) | ||
| 296 | CFLAGS := $(CFLAGS) -Wstack-protector | ||
| 297 | endif | ||
| 298 | |||
| 299 | ifeq ($(call try-cc,$(SOURCE_HELLO),-Werror -Wvolatile-register-var),y) | ||
| 300 | CFLAGS := $(CFLAGS) -Wvolatile-register-var | ||
| 301 | endif | ||
| 297 | 302 | ||
| 298 | ### --- END CONFIGURATION SECTION --- | 303 | ### --- END CONFIGURATION SECTION --- |
| 299 | 304 | ||
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c index c056cdc06912..8879463807e4 100644 --- a/tools/perf/builtin-annotate.c +++ b/tools/perf/builtin-annotate.c | |||
| @@ -212,7 +212,7 @@ get_source_line(struct hist_entry *he, int len, const char *filename) | |||
| 212 | continue; | 212 | continue; |
| 213 | 213 | ||
| 214 | offset = start + i; | 214 | offset = start + i; |
| 215 | sprintf(cmd, "addr2line -e %s %016llx", filename, offset); | 215 | sprintf(cmd, "addr2line -e %s %016" PRIx64, filename, offset); |
| 216 | fp = popen(cmd, "r"); | 216 | fp = popen(cmd, "r"); |
| 217 | if (!fp) | 217 | if (!fp) |
| 218 | continue; | 218 | continue; |
| @@ -270,9 +270,9 @@ static void hist_entry__print_hits(struct hist_entry *self) | |||
| 270 | 270 | ||
| 271 | for (offset = 0; offset < len; ++offset) | 271 | for (offset = 0; offset < len; ++offset) |
| 272 | if (h->ip[offset] != 0) | 272 | if (h->ip[offset] != 0) |
| 273 | printf("%*Lx: %Lu\n", BITS_PER_LONG / 2, | 273 | printf("%*" PRIx64 ": %" PRIu64 "\n", BITS_PER_LONG / 2, |
| 274 | sym->start + offset, h->ip[offset]); | 274 | sym->start + offset, h->ip[offset]); |
| 275 | printf("%*s: %Lu\n", BITS_PER_LONG / 2, "h->sum", h->sum); | 275 | printf("%*s: %" PRIu64 "\n", BITS_PER_LONG / 2, "h->sum", h->sum); |
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | static int hist_entry__tty_annotate(struct hist_entry *he) | 278 | static int hist_entry__tty_annotate(struct hist_entry *he) |
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c index def7ddc2fd4f..d97256d65980 100644 --- a/tools/perf/builtin-kmem.c +++ b/tools/perf/builtin-kmem.c | |||
| @@ -371,10 +371,10 @@ static void __print_result(struct rb_root *root, struct perf_session *session, | |||
| 371 | addr = data->ptr; | 371 | addr = data->ptr; |
| 372 | 372 | ||
| 373 | if (sym != NULL) | 373 | if (sym != NULL) |
| 374 | snprintf(buf, sizeof(buf), "%s+%Lx", sym->name, | 374 | snprintf(buf, sizeof(buf), "%s+%" PRIx64 "", sym->name, |
| 375 | addr - map->unmap_ip(map, sym->start)); | 375 | addr - map->unmap_ip(map, sym->start)); |
| 376 | else | 376 | else |
| 377 | snprintf(buf, sizeof(buf), "%#Lx", addr); | 377 | snprintf(buf, sizeof(buf), "%#" PRIx64 "", addr); |
| 378 | printf(" %-34s |", buf); | 378 | printf(" %-34s |", buf); |
| 379 | 379 | ||
| 380 | printf(" %9llu/%-5lu | %9llu/%-5lu | %8lu | %8lu | %6.3f%%\n", | 380 | printf(" %9llu/%-5lu | %9llu/%-5lu | %8lu | %8lu | %6.3f%%\n", |
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index b9c6e5432971..2b36defc5d73 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c | |||
| @@ -782,9 +782,9 @@ static void print_result(void) | |||
| 782 | pr_info("%10u ", st->nr_acquired); | 782 | pr_info("%10u ", st->nr_acquired); |
| 783 | pr_info("%10u ", st->nr_contended); | 783 | pr_info("%10u ", st->nr_contended); |
| 784 | 784 | ||
| 785 | pr_info("%15llu ", st->wait_time_total); | 785 | pr_info("%15" PRIu64 " ", st->wait_time_total); |
| 786 | pr_info("%15llu ", st->wait_time_max); | 786 | pr_info("%15" PRIu64 " ", st->wait_time_max); |
| 787 | pr_info("%15llu ", st->wait_time_min == ULLONG_MAX ? | 787 | pr_info("%15" PRIu64 " ", st->wait_time_min == ULLONG_MAX ? |
| 788 | 0 : st->wait_time_min); | 788 | 0 : st->wait_time_min); |
| 789 | pr_info("\n"); | 789 | pr_info("\n"); |
| 790 | } | 790 | } |
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index fcd29e8af29f..60cac6f92e8b 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c | |||
| @@ -759,8 +759,8 @@ static int __cmd_record(int argc, const char **argv) | |||
| 759 | perf_session__process_machines(session, event__synthesize_guest_os); | 759 | perf_session__process_machines(session, event__synthesize_guest_os); |
| 760 | 760 | ||
| 761 | if (!system_wide) | 761 | if (!system_wide) |
| 762 | event__synthesize_thread(target_tid, process_synthesized_event, | 762 | event__synthesize_thread_map(threads, process_synthesized_event, |
| 763 | session); | 763 | session); |
| 764 | else | 764 | else |
| 765 | event__synthesize_threads(process_synthesized_event, session); | 765 | event__synthesize_threads(process_synthesized_event, session); |
| 766 | 766 | ||
| @@ -817,7 +817,7 @@ static int __cmd_record(int argc, const char **argv) | |||
| 817 | * Approximate RIP event size: 24 bytes. | 817 | * Approximate RIP event size: 24 bytes. |
| 818 | */ | 818 | */ |
| 819 | fprintf(stderr, | 819 | fprintf(stderr, |
| 820 | "[ perf record: Captured and wrote %.3f MB %s (~%lld samples) ]\n", | 820 | "[ perf record: Captured and wrote %.3f MB %s (~%" PRIu64 " samples) ]\n", |
| 821 | (double)bytes_written / 1024.0 / 1024.0, | 821 | (double)bytes_written / 1024.0 / 1024.0, |
| 822 | output_name, | 822 | output_name, |
| 823 | bytes_written / 24); | 823 | bytes_written / 24); |
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 75183a4518e6..c27e31f289e6 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
| @@ -197,7 +197,7 @@ static int process_read_event(event_t *event, struct sample_data *sample __used, | |||
| 197 | event->read.value); | 197 | event->read.value); |
| 198 | } | 198 | } |
| 199 | 199 | ||
| 200 | dump_printf(": %d %d %s %Lu\n", event->read.pid, event->read.tid, | 200 | dump_printf(": %d %d %s %" PRIu64 "\n", event->read.pid, event->read.tid, |
| 201 | attr ? __event_name(attr->type, attr->config) : "FAIL", | 201 | attr ? __event_name(attr->type, attr->config) : "FAIL", |
| 202 | event->read.value); | 202 | event->read.value); |
| 203 | 203 | ||
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c index 29e7ffd85690..29acb894e035 100644 --- a/tools/perf/builtin-sched.c +++ b/tools/perf/builtin-sched.c | |||
| @@ -193,7 +193,7 @@ static void calibrate_run_measurement_overhead(void) | |||
| 193 | } | 193 | } |
| 194 | run_measurement_overhead = min_delta; | 194 | run_measurement_overhead = min_delta; |
| 195 | 195 | ||
| 196 | printf("run measurement overhead: %Ld nsecs\n", min_delta); | 196 | printf("run measurement overhead: %" PRIu64 " nsecs\n", min_delta); |
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | static void calibrate_sleep_measurement_overhead(void) | 199 | static void calibrate_sleep_measurement_overhead(void) |
| @@ -211,7 +211,7 @@ static void calibrate_sleep_measurement_overhead(void) | |||
| 211 | min_delta -= 10000; | 211 | min_delta -= 10000; |
| 212 | sleep_measurement_overhead = min_delta; | 212 | sleep_measurement_overhead = min_delta; |
| 213 | 213 | ||
| 214 | printf("sleep measurement overhead: %Ld nsecs\n", min_delta); | 214 | printf("sleep measurement overhead: %" PRIu64 " nsecs\n", min_delta); |
| 215 | } | 215 | } |
| 216 | 216 | ||
| 217 | static struct sched_atom * | 217 | static struct sched_atom * |
| @@ -617,13 +617,13 @@ static void test_calibrations(void) | |||
| 617 | burn_nsecs(1e6); | 617 | burn_nsecs(1e6); |
| 618 | T1 = get_nsecs(); | 618 | T1 = get_nsecs(); |
| 619 | 619 | ||
| 620 | printf("the run test took %Ld nsecs\n", T1-T0); | 620 | printf("the run test took %" PRIu64 " nsecs\n", T1 - T0); |
| 621 | 621 | ||
| 622 | T0 = get_nsecs(); | 622 | T0 = get_nsecs(); |
| 623 | sleep_nsecs(1e6); | 623 | sleep_nsecs(1e6); |
| 624 | T1 = get_nsecs(); | 624 | T1 = get_nsecs(); |
| 625 | 625 | ||
| 626 | printf("the sleep test took %Ld nsecs\n", T1-T0); | 626 | printf("the sleep test took %" PRIu64 " nsecs\n", T1 - T0); |
| 627 | } | 627 | } |
| 628 | 628 | ||
| 629 | #define FILL_FIELD(ptr, field, event, data) \ | 629 | #define FILL_FIELD(ptr, field, event, data) \ |
| @@ -816,10 +816,10 @@ replay_switch_event(struct trace_switch_event *switch_event, | |||
| 816 | delta = 0; | 816 | delta = 0; |
| 817 | 817 | ||
| 818 | if (delta < 0) | 818 | if (delta < 0) |
| 819 | die("hm, delta: %Ld < 0 ?\n", delta); | 819 | die("hm, delta: %" PRIu64 " < 0 ?\n", delta); |
| 820 | 820 | ||
| 821 | if (verbose) { | 821 | if (verbose) { |
| 822 | printf(" ... switch from %s/%d to %s/%d [ran %Ld nsecs]\n", | 822 | printf(" ... switch from %s/%d to %s/%d [ran %" PRIu64 " nsecs]\n", |
| 823 | switch_event->prev_comm, switch_event->prev_pid, | 823 | switch_event->prev_comm, switch_event->prev_pid, |
| 824 | switch_event->next_comm, switch_event->next_pid, | 824 | switch_event->next_comm, switch_event->next_pid, |
| 825 | delta); | 825 | delta); |
| @@ -1048,7 +1048,7 @@ latency_switch_event(struct trace_switch_event *switch_event, | |||
| 1048 | delta = 0; | 1048 | delta = 0; |
| 1049 | 1049 | ||
| 1050 | if (delta < 0) | 1050 | if (delta < 0) |
| 1051 | die("hm, delta: %Ld < 0 ?\n", delta); | 1051 | die("hm, delta: %" PRIu64 " < 0 ?\n", delta); |
| 1052 | 1052 | ||
| 1053 | 1053 | ||
| 1054 | sched_out = perf_session__findnew(session, switch_event->prev_pid); | 1054 | sched_out = perf_session__findnew(session, switch_event->prev_pid); |
| @@ -1221,7 +1221,7 @@ static void output_lat_thread(struct work_atoms *work_list) | |||
| 1221 | 1221 | ||
| 1222 | avg = work_list->total_lat / work_list->nb_atoms; | 1222 | avg = work_list->total_lat / work_list->nb_atoms; |
| 1223 | 1223 | ||
| 1224 | printf("|%11.3f ms |%9llu | avg:%9.3f ms | max:%9.3f ms | max at: %9.6f s\n", | 1224 | printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %9.6f s\n", |
| 1225 | (double)work_list->total_runtime / 1e6, | 1225 | (double)work_list->total_runtime / 1e6, |
| 1226 | work_list->nb_atoms, (double)avg / 1e6, | 1226 | work_list->nb_atoms, (double)avg / 1e6, |
| 1227 | (double)work_list->max_lat / 1e6, | 1227 | (double)work_list->max_lat / 1e6, |
| @@ -1423,7 +1423,7 @@ map_switch_event(struct trace_switch_event *switch_event, | |||
| 1423 | delta = 0; | 1423 | delta = 0; |
| 1424 | 1424 | ||
| 1425 | if (delta < 0) | 1425 | if (delta < 0) |
| 1426 | die("hm, delta: %Ld < 0 ?\n", delta); | 1426 | die("hm, delta: %" PRIu64 " < 0 ?\n", delta); |
| 1427 | 1427 | ||
| 1428 | 1428 | ||
| 1429 | sched_out = perf_session__findnew(session, switch_event->prev_pid); | 1429 | sched_out = perf_session__findnew(session, switch_event->prev_pid); |
| @@ -1713,7 +1713,7 @@ static void __cmd_lat(void) | |||
| 1713 | } | 1713 | } |
| 1714 | 1714 | ||
| 1715 | printf(" -----------------------------------------------------------------------------------------\n"); | 1715 | printf(" -----------------------------------------------------------------------------------------\n"); |
| 1716 | printf(" TOTAL: |%11.3f ms |%9Ld |\n", | 1716 | printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n", |
| 1717 | (double)all_runtime/1e6, all_count); | 1717 | (double)all_runtime/1e6, all_count); |
| 1718 | 1718 | ||
| 1719 | printf(" ---------------------------------------------------\n"); | 1719 | printf(" ---------------------------------------------------\n"); |
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 150a606002eb..b766c2a9ac97 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c | |||
| @@ -77,8 +77,8 @@ static int process_sample_event(event_t *event, struct sample_data *sample, | |||
| 77 | if (session->sample_type & PERF_SAMPLE_RAW) { | 77 | if (session->sample_type & PERF_SAMPLE_RAW) { |
| 78 | if (debug_mode) { | 78 | if (debug_mode) { |
| 79 | if (sample->time < last_timestamp) { | 79 | if (sample->time < last_timestamp) { |
| 80 | pr_err("Samples misordered, previous: %llu " | 80 | pr_err("Samples misordered, previous: %" PRIu64 |
| 81 | "this: %llu\n", last_timestamp, | 81 | " this: %" PRIu64 "\n", last_timestamp, |
| 82 | sample->time); | 82 | sample->time); |
| 83 | nr_unordered++; | 83 | nr_unordered++; |
| 84 | } | 84 | } |
| @@ -126,7 +126,7 @@ static int __cmd_script(struct perf_session *session) | |||
| 126 | ret = perf_session__process_events(session, &event_ops); | 126 | ret = perf_session__process_events(session, &event_ops); |
| 127 | 127 | ||
| 128 | if (debug_mode) | 128 | if (debug_mode) |
| 129 | pr_err("Misordered timestamps: %llu\n", nr_unordered); | 129 | pr_err("Misordered timestamps: %" PRIu64 "\n", nr_unordered); |
| 130 | 130 | ||
| 131 | return ret; | 131 | return ret; |
| 132 | } | 132 | } |
diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index 0ff11d9b13be..a482a191a0ca 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c | |||
| @@ -206,8 +206,8 @@ static int read_counter_aggr(struct perf_evsel *counter) | |||
| 206 | update_stats(&ps->res_stats[i], count[i]); | 206 | update_stats(&ps->res_stats[i], count[i]); |
| 207 | 207 | ||
| 208 | if (verbose) { | 208 | if (verbose) { |
| 209 | fprintf(stderr, "%s: %Ld %Ld %Ld\n", event_name(counter), | 209 | fprintf(stderr, "%s: %" PRIu64 " %" PRIu64 " %" PRIu64 "\n", |
| 210 | count[0], count[1], count[2]); | 210 | event_name(counter), count[0], count[1], count[2]); |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | /* | 213 | /* |
diff --git a/tools/perf/builtin-test.c b/tools/perf/builtin-test.c index ed5696198d3d..5dcdba653d70 100644 --- a/tools/perf/builtin-test.c +++ b/tools/perf/builtin-test.c | |||
| @@ -146,7 +146,7 @@ next_pair: | |||
| 146 | if (llabs(skew) < page_size) | 146 | if (llabs(skew) < page_size) |
| 147 | continue; | 147 | continue; |
| 148 | 148 | ||
| 149 | pr_debug("%#Lx: diff end addr for %s v: %#Lx k: %#Lx\n", | 149 | pr_debug("%#" PRIx64 ": diff end addr for %s v: %#" PRIx64 " k: %#" PRIx64 "\n", |
| 150 | sym->start, sym->name, sym->end, pair->end); | 150 | sym->start, sym->name, sym->end, pair->end); |
| 151 | } else { | 151 | } else { |
| 152 | struct rb_node *nnd; | 152 | struct rb_node *nnd; |
| @@ -168,11 +168,11 @@ detour: | |||
| 168 | goto detour; | 168 | goto detour; |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | pr_debug("%#Lx: diff name v: %s k: %s\n", | 171 | pr_debug("%#" PRIx64 ": diff name v: %s k: %s\n", |
| 172 | sym->start, sym->name, pair->name); | 172 | sym->start, sym->name, pair->name); |
| 173 | } | 173 | } |
| 174 | } else | 174 | } else |
| 175 | pr_debug("%#Lx: %s not on kallsyms\n", sym->start, sym->name); | 175 | pr_debug("%#" PRIx64 ": %s not on kallsyms\n", sym->start, sym->name); |
| 176 | 176 | ||
| 177 | err = -1; | 177 | err = -1; |
| 178 | } | 178 | } |
| @@ -211,10 +211,10 @@ detour: | |||
| 211 | 211 | ||
| 212 | if (pair->start == pos->start) { | 212 | if (pair->start == pos->start) { |
| 213 | pair->priv = 1; | 213 | pair->priv = 1; |
| 214 | pr_info(" %Lx-%Lx %Lx %s in kallsyms as", | 214 | pr_info(" %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s in kallsyms as", |
| 215 | pos->start, pos->end, pos->pgoff, pos->dso->name); | 215 | pos->start, pos->end, pos->pgoff, pos->dso->name); |
| 216 | if (pos->pgoff != pair->pgoff || pos->end != pair->end) | 216 | if (pos->pgoff != pair->pgoff || pos->end != pair->end) |
| 217 | pr_info(": \n*%Lx-%Lx %Lx", | 217 | pr_info(": \n*%" PRIx64 "-%" PRIx64 " %" PRIx64 "", |
| 218 | pair->start, pair->end, pair->pgoff); | 218 | pair->start, pair->end, pair->pgoff); |
| 219 | pr_info(" %s\n", pair->dso->name); | 219 | pr_info(" %s\n", pair->dso->name); |
| 220 | pair->priv = 1; | 220 | pair->priv = 1; |
| @@ -307,7 +307,7 @@ static int test__open_syscall_event(void) | |||
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | if (evsel->counts->cpu[0].val != nr_open_calls) { | 309 | if (evsel->counts->cpu[0].val != nr_open_calls) { |
| 310 | pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls, got %Ld\n", | 310 | pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls, got %" PRIu64 "\n", |
| 311 | nr_open_calls, evsel->counts->cpu[0].val); | 311 | nr_open_calls, evsel->counts->cpu[0].val); |
| 312 | goto out_close_fd; | 312 | goto out_close_fd; |
| 313 | } | 313 | } |
| @@ -332,8 +332,7 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 332 | struct perf_evsel *evsel; | 332 | struct perf_evsel *evsel; |
| 333 | struct perf_event_attr attr; | 333 | struct perf_event_attr attr; |
| 334 | unsigned int nr_open_calls = 111, i; | 334 | unsigned int nr_open_calls = 111, i; |
| 335 | cpu_set_t *cpu_set; | 335 | cpu_set_t cpu_set; |
| 336 | size_t cpu_set_size; | ||
| 337 | int id = trace_event__id("sys_enter_open"); | 336 | int id = trace_event__id("sys_enter_open"); |
| 338 | 337 | ||
| 339 | if (id < 0) { | 338 | if (id < 0) { |
| @@ -353,13 +352,8 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 353 | return -1; | 352 | return -1; |
| 354 | } | 353 | } |
| 355 | 354 | ||
| 356 | cpu_set = CPU_ALLOC(cpus->nr); | ||
| 357 | 355 | ||
| 358 | if (cpu_set == NULL) | 356 | CPU_ZERO(&cpu_set); |
| 359 | goto out_thread_map_delete; | ||
| 360 | |||
| 361 | cpu_set_size = CPU_ALLOC_SIZE(cpus->nr); | ||
| 362 | CPU_ZERO_S(cpu_set_size, cpu_set); | ||
| 363 | 357 | ||
| 364 | memset(&attr, 0, sizeof(attr)); | 358 | memset(&attr, 0, sizeof(attr)); |
| 365 | attr.type = PERF_TYPE_TRACEPOINT; | 359 | attr.type = PERF_TYPE_TRACEPOINT; |
| @@ -367,7 +361,7 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 367 | evsel = perf_evsel__new(&attr, 0); | 361 | evsel = perf_evsel__new(&attr, 0); |
| 368 | if (evsel == NULL) { | 362 | if (evsel == NULL) { |
| 369 | pr_debug("perf_evsel__new\n"); | 363 | pr_debug("perf_evsel__new\n"); |
| 370 | goto out_cpu_free; | 364 | goto out_thread_map_delete; |
| 371 | } | 365 | } |
| 372 | 366 | ||
| 373 | if (perf_evsel__open(evsel, cpus, threads) < 0) { | 367 | if (perf_evsel__open(evsel, cpus, threads) < 0) { |
| @@ -379,14 +373,29 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 379 | 373 | ||
| 380 | for (cpu = 0; cpu < cpus->nr; ++cpu) { | 374 | for (cpu = 0; cpu < cpus->nr; ++cpu) { |
| 381 | unsigned int ncalls = nr_open_calls + cpu; | 375 | unsigned int ncalls = nr_open_calls + cpu; |
| 376 | /* | ||
| 377 | * XXX eventually lift this restriction in a way that | ||
| 378 | * keeps perf building on older glibc installations | ||
| 379 | * without CPU_ALLOC. 1024 cpus in 2010 still seems | ||
| 380 | * a reasonable upper limit tho :-) | ||
| 381 | */ | ||
| 382 | if (cpus->map[cpu] >= CPU_SETSIZE) { | ||
| 383 | pr_debug("Ignoring CPU %d\n", cpus->map[cpu]); | ||
| 384 | continue; | ||
| 385 | } | ||
| 382 | 386 | ||
| 383 | CPU_SET(cpu, cpu_set); | 387 | CPU_SET(cpus->map[cpu], &cpu_set); |
| 384 | sched_setaffinity(0, cpu_set_size, cpu_set); | 388 | if (sched_setaffinity(0, sizeof(cpu_set), &cpu_set) < 0) { |
| 389 | pr_debug("sched_setaffinity() failed on CPU %d: %s ", | ||
| 390 | cpus->map[cpu], | ||
| 391 | strerror(errno)); | ||
| 392 | goto out_close_fd; | ||
| 393 | } | ||
| 385 | for (i = 0; i < ncalls; ++i) { | 394 | for (i = 0; i < ncalls; ++i) { |
| 386 | fd = open("/etc/passwd", O_RDONLY); | 395 | fd = open("/etc/passwd", O_RDONLY); |
| 387 | close(fd); | 396 | close(fd); |
| 388 | } | 397 | } |
| 389 | CPU_CLR(cpu, cpu_set); | 398 | CPU_CLR(cpus->map[cpu], &cpu_set); |
| 390 | } | 399 | } |
| 391 | 400 | ||
| 392 | /* | 401 | /* |
| @@ -402,6 +411,9 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 402 | for (cpu = 0; cpu < cpus->nr; ++cpu) { | 411 | for (cpu = 0; cpu < cpus->nr; ++cpu) { |
| 403 | unsigned int expected; | 412 | unsigned int expected; |
| 404 | 413 | ||
| 414 | if (cpus->map[cpu] >= CPU_SETSIZE) | ||
| 415 | continue; | ||
| 416 | |||
| 405 | if (perf_evsel__read_on_cpu(evsel, cpu, 0) < 0) { | 417 | if (perf_evsel__read_on_cpu(evsel, cpu, 0) < 0) { |
| 406 | pr_debug("perf_evsel__open_read_on_cpu\n"); | 418 | pr_debug("perf_evsel__open_read_on_cpu\n"); |
| 407 | goto out_close_fd; | 419 | goto out_close_fd; |
| @@ -409,8 +421,8 @@ static int test__open_syscall_event_on_all_cpus(void) | |||
| 409 | 421 | ||
| 410 | expected = nr_open_calls + cpu; | 422 | expected = nr_open_calls + cpu; |
| 411 | if (evsel->counts->cpu[cpu].val != expected) { | 423 | if (evsel->counts->cpu[cpu].val != expected) { |
| 412 | pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %Ld\n", | 424 | pr_debug("perf_evsel__read_on_cpu: expected to intercept %d calls on cpu %d, got %" PRIu64 "\n", |
| 413 | expected, cpu, evsel->counts->cpu[cpu].val); | 425 | expected, cpus->map[cpu], evsel->counts->cpu[cpu].val); |
| 414 | goto out_close_fd; | 426 | goto out_close_fd; |
| 415 | } | 427 | } |
| 416 | } | 428 | } |
| @@ -420,8 +432,6 @@ out_close_fd: | |||
| 420 | perf_evsel__close_fd(evsel, 1, threads->nr); | 432 | perf_evsel__close_fd(evsel, 1, threads->nr); |
| 421 | out_evsel_delete: | 433 | out_evsel_delete: |
| 422 | perf_evsel__delete(evsel); | 434 | perf_evsel__delete(evsel); |
| 423 | out_cpu_free: | ||
| 424 | CPU_FREE(cpu_set); | ||
| 425 | out_thread_map_delete: | 435 | out_thread_map_delete: |
| 426 | thread_map__delete(threads); | 436 | thread_map__delete(threads); |
| 427 | return err; | 437 | return err; |
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 05344c6210ac..5a29d9cd9486 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c | |||
| @@ -40,6 +40,7 @@ | |||
| 40 | #include <stdio.h> | 40 | #include <stdio.h> |
| 41 | #include <termios.h> | 41 | #include <termios.h> |
| 42 | #include <unistd.h> | 42 | #include <unistd.h> |
| 43 | #include <inttypes.h> | ||
| 43 | 44 | ||
| 44 | #include <errno.h> | 45 | #include <errno.h> |
| 45 | #include <time.h> | 46 | #include <time.h> |
| @@ -214,7 +215,7 @@ static int parse_source(struct sym_entry *syme) | |||
| 214 | len = sym->end - sym->start; | 215 | len = sym->end - sym->start; |
| 215 | 216 | ||
| 216 | sprintf(command, | 217 | sprintf(command, |
| 217 | "objdump --start-address=%#0*Lx --stop-address=%#0*Lx -dS %s", | 218 | "objdump --start-address=%#0*" PRIx64 " --stop-address=%#0*" PRIx64 " -dS %s", |
| 218 | BITS_PER_LONG / 4, map__rip_2objdump(map, sym->start), | 219 | BITS_PER_LONG / 4, map__rip_2objdump(map, sym->start), |
| 219 | BITS_PER_LONG / 4, map__rip_2objdump(map, sym->end), path); | 220 | BITS_PER_LONG / 4, map__rip_2objdump(map, sym->end), path); |
| 220 | 221 | ||
| @@ -308,7 +309,7 @@ static void lookup_sym_source(struct sym_entry *syme) | |||
| 308 | struct source_line *line; | 309 | struct source_line *line; |
| 309 | char pattern[PATTERN_LEN + 1]; | 310 | char pattern[PATTERN_LEN + 1]; |
| 310 | 311 | ||
| 311 | sprintf(pattern, "%0*Lx <", BITS_PER_LONG / 4, | 312 | sprintf(pattern, "%0*" PRIx64 " <", BITS_PER_LONG / 4, |
| 312 | map__rip_2objdump(syme->map, symbol->start)); | 313 | map__rip_2objdump(syme->map, symbol->start)); |
| 313 | 314 | ||
| 314 | pthread_mutex_lock(&syme->src->lock); | 315 | pthread_mutex_lock(&syme->src->lock); |
| @@ -537,7 +538,7 @@ static void print_sym_table(void) | |||
| 537 | if (nr_counters == 1 || !display_weighted) { | 538 | if (nr_counters == 1 || !display_weighted) { |
| 538 | struct perf_evsel *first; | 539 | struct perf_evsel *first; |
| 539 | first = list_entry(evsel_list.next, struct perf_evsel, node); | 540 | first = list_entry(evsel_list.next, struct perf_evsel, node); |
| 540 | printf("%Ld", first->attr.sample_period); | 541 | printf("%" PRIu64, (uint64_t)first->attr.sample_period); |
| 541 | if (freq) | 542 | if (freq) |
| 542 | printf("Hz "); | 543 | printf("Hz "); |
| 543 | else | 544 | else |
| @@ -640,7 +641,7 @@ static void print_sym_table(void) | |||
| 640 | 641 | ||
| 641 | percent_color_fprintf(stdout, "%4.1f%%", pcnt); | 642 | percent_color_fprintf(stdout, "%4.1f%%", pcnt); |
| 642 | if (verbose) | 643 | if (verbose) |
| 643 | printf(" %016llx", sym->start); | 644 | printf(" %016" PRIx64, sym->start); |
| 644 | printf(" %-*.*s", sym_width, sym_width, sym->name); | 645 | printf(" %-*.*s", sym_width, sym_width, sym->name); |
| 645 | printf(" %-*.*s\n", dso_width, dso_width, | 646 | printf(" %-*.*s\n", dso_width, dso_width, |
| 646 | dso_width >= syme->map->dso->long_name_len ? | 647 | dso_width >= syme->map->dso->long_name_len ? |
| @@ -1305,7 +1306,7 @@ static int __cmd_top(void) | |||
| 1305 | return -ENOMEM; | 1306 | return -ENOMEM; |
| 1306 | 1307 | ||
| 1307 | if (target_tid != -1) | 1308 | if (target_tid != -1) |
| 1308 | event__synthesize_thread(target_tid, event__process, session); | 1309 | event__synthesize_thread_map(threads, event__process, session); |
| 1309 | else | 1310 | else |
| 1310 | event__synthesize_threads(event__process, session); | 1311 | event__synthesize_threads(event__process, session); |
| 1311 | 1312 | ||
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 2302ec051bb4..50d0a931497a 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
| @@ -263,11 +263,12 @@ static int __event__synthesize_thread(event_t *comm_event, event_t *mmap_event, | |||
| 263 | process, session); | 263 | process, session); |
| 264 | } | 264 | } |
| 265 | 265 | ||
| 266 | int event__synthesize_thread(pid_t pid, event__handler_t process, | 266 | int event__synthesize_thread_map(struct thread_map *threads, |
| 267 | struct perf_session *session) | 267 | event__handler_t process, |
| 268 | struct perf_session *session) | ||
| 268 | { | 269 | { |
| 269 | event_t *comm_event, *mmap_event; | 270 | event_t *comm_event, *mmap_event; |
| 270 | int err = -1; | 271 | int err = -1, thread; |
| 271 | 272 | ||
| 272 | comm_event = malloc(sizeof(comm_event->comm) + session->id_hdr_size); | 273 | comm_event = malloc(sizeof(comm_event->comm) + session->id_hdr_size); |
| 273 | if (comm_event == NULL) | 274 | if (comm_event == NULL) |
| @@ -277,8 +278,15 @@ int event__synthesize_thread(pid_t pid, event__handler_t process, | |||
| 277 | if (mmap_event == NULL) | 278 | if (mmap_event == NULL) |
| 278 | goto out_free_comm; | 279 | goto out_free_comm; |
| 279 | 280 | ||
| 280 | err = __event__synthesize_thread(comm_event, mmap_event, pid, | 281 | err = 0; |
| 281 | process, session); | 282 | for (thread = 0; thread < threads->nr; ++thread) { |
| 283 | if (__event__synthesize_thread(comm_event, mmap_event, | ||
| 284 | threads->map[thread], | ||
| 285 | process, session)) { | ||
| 286 | err = -1; | ||
| 287 | break; | ||
| 288 | } | ||
| 289 | } | ||
| 282 | free(mmap_event); | 290 | free(mmap_event); |
| 283 | out_free_comm: | 291 | out_free_comm: |
| 284 | free(comm_event); | 292 | free(comm_event); |
| @@ -459,7 +467,8 @@ int event__process_comm(event_t *self, struct sample_data *sample __used, | |||
| 459 | int event__process_lost(event_t *self, struct sample_data *sample __used, | 467 | int event__process_lost(event_t *self, struct sample_data *sample __used, |
| 460 | struct perf_session *session) | 468 | struct perf_session *session) |
| 461 | { | 469 | { |
| 462 | dump_printf(": id:%Ld: lost:%Ld\n", self->lost.id, self->lost.lost); | 470 | dump_printf(": id:%" PRIu64 ": lost:%" PRIu64 "\n", |
| 471 | self->lost.id, self->lost.lost); | ||
| 463 | session->hists.stats.total_lost += self->lost.lost; | 472 | session->hists.stats.total_lost += self->lost.lost; |
| 464 | return 0; | 473 | return 0; |
| 465 | } | 474 | } |
| @@ -575,7 +584,7 @@ int event__process_mmap(event_t *self, struct sample_data *sample __used, | |||
| 575 | u8 cpumode = self->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; | 584 | u8 cpumode = self->header.misc & PERF_RECORD_MISC_CPUMODE_MASK; |
| 576 | int ret = 0; | 585 | int ret = 0; |
| 577 | 586 | ||
| 578 | dump_printf(" %d/%d: [%#Lx(%#Lx) @ %#Lx]: %s\n", | 587 | dump_printf(" %d/%d: [%#" PRIx64 "(%#" PRIx64 ") @ %#" PRIx64 "]: %s\n", |
| 579 | self->mmap.pid, self->mmap.tid, self->mmap.start, | 588 | self->mmap.pid, self->mmap.tid, self->mmap.start, |
| 580 | self->mmap.len, self->mmap.pgoff, self->mmap.filename); | 589 | self->mmap.len, self->mmap.pgoff, self->mmap.filename); |
| 581 | 590 | ||
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index 2b7e91902f10..cc7b52f9b492 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h | |||
| @@ -135,14 +135,16 @@ typedef union event_union { | |||
| 135 | void event__print_totals(void); | 135 | void event__print_totals(void); |
| 136 | 136 | ||
| 137 | struct perf_session; | 137 | struct perf_session; |
| 138 | struct thread_map; | ||
| 138 | 139 | ||
| 139 | typedef int (*event__handler_synth_t)(event_t *event, | 140 | typedef int (*event__handler_synth_t)(event_t *event, |
| 140 | struct perf_session *session); | 141 | struct perf_session *session); |
| 141 | typedef int (*event__handler_t)(event_t *event, struct sample_data *sample, | 142 | typedef int (*event__handler_t)(event_t *event, struct sample_data *sample, |
| 142 | struct perf_session *session); | 143 | struct perf_session *session); |
| 143 | 144 | ||
| 144 | int event__synthesize_thread(pid_t pid, event__handler_t process, | 145 | int event__synthesize_thread_map(struct thread_map *threads, |
| 145 | struct perf_session *session); | 146 | event__handler_t process, |
| 147 | struct perf_session *session); | ||
| 146 | int event__synthesize_threads(event__handler_t process, | 148 | int event__synthesize_threads(event__handler_t process, |
| 147 | struct perf_session *session); | 149 | struct perf_session *session); |
| 148 | int event__synthesize_kernel_mmap(event__handler_t process, | 150 | int event__synthesize_kernel_mmap(event__handler_t process, |
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index f5cfed60af98..d8575d31ee6c 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
| @@ -90,7 +90,7 @@ int __perf_evsel__read(struct perf_evsel *evsel, | |||
| 90 | int cpu, thread; | 90 | int cpu, thread; |
| 91 | struct perf_counts_values *aggr = &evsel->counts->aggr, count; | 91 | struct perf_counts_values *aggr = &evsel->counts->aggr, count; |
| 92 | 92 | ||
| 93 | aggr->val = 0; | 93 | aggr->val = aggr->ena = aggr->run = 0; |
| 94 | 94 | ||
| 95 | for (cpu = 0; cpu < ncpus; cpu++) { | 95 | for (cpu = 0; cpu < ncpus; cpu++) { |
| 96 | for (thread = 0; thread < nthreads; thread++) { | 96 | for (thread = 0; thread < nthreads; thread++) { |
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index 989fa2dee2fd..f6a929e74981 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c | |||
| @@ -798,8 +798,8 @@ static int perf_file_section__process(struct perf_file_section *self, | |||
| 798 | int feat, int fd) | 798 | int feat, int fd) |
| 799 | { | 799 | { |
| 800 | if (lseek(fd, self->offset, SEEK_SET) == (off_t)-1) { | 800 | if (lseek(fd, self->offset, SEEK_SET) == (off_t)-1) { |
| 801 | pr_debug("Failed to lseek to %Ld offset for feature %d, " | 801 | pr_debug("Failed to lseek to %" PRIu64 " offset for feature " |
| 802 | "continuing...\n", self->offset, feat); | 802 | "%d, continuing...\n", self->offset, feat); |
| 803 | return 0; | 803 | return 0; |
| 804 | } | 804 | } |
| 805 | 805 | ||
diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index c749ba6136a0..32f4f1f2f6e4 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c | |||
| @@ -636,13 +636,13 @@ int hist_entry__snprintf(struct hist_entry *self, char *s, size_t size, | |||
| 636 | } | 636 | } |
| 637 | } | 637 | } |
| 638 | } else | 638 | } else |
| 639 | ret = snprintf(s, size, sep ? "%lld" : "%12lld ", period); | 639 | ret = snprintf(s, size, sep ? "%" PRIu64 : "%12" PRIu64 " ", period); |
| 640 | 640 | ||
| 641 | if (symbol_conf.show_nr_samples) { | 641 | if (symbol_conf.show_nr_samples) { |
| 642 | if (sep) | 642 | if (sep) |
| 643 | ret += snprintf(s + ret, size - ret, "%c%lld", *sep, period); | 643 | ret += snprintf(s + ret, size - ret, "%c%" PRIu64, *sep, period); |
| 644 | else | 644 | else |
| 645 | ret += snprintf(s + ret, size - ret, "%11lld", period); | 645 | ret += snprintf(s + ret, size - ret, "%11" PRIu64, period); |
| 646 | } | 646 | } |
| 647 | 647 | ||
| 648 | if (pair_hists) { | 648 | if (pair_hists) { |
| @@ -971,7 +971,7 @@ int hist_entry__inc_addr_samples(struct hist_entry *self, u64 ip) | |||
| 971 | sym_size = sym->end - sym->start; | 971 | sym_size = sym->end - sym->start; |
| 972 | offset = ip - sym->start; | 972 | offset = ip - sym->start; |
| 973 | 973 | ||
| 974 | pr_debug3("%s: ip=%#Lx\n", __func__, self->ms.map->unmap_ip(self->ms.map, ip)); | 974 | pr_debug3("%s: ip=%#" PRIx64 "\n", __func__, self->ms.map->unmap_ip(self->ms.map, ip)); |
| 975 | 975 | ||
| 976 | if (offset >= sym_size) | 976 | if (offset >= sym_size) |
| 977 | return 0; | 977 | return 0; |
| @@ -980,8 +980,9 @@ int hist_entry__inc_addr_samples(struct hist_entry *self, u64 ip) | |||
| 980 | h->sum++; | 980 | h->sum++; |
| 981 | h->ip[offset]++; | 981 | h->ip[offset]++; |
| 982 | 982 | ||
| 983 | pr_debug3("%#Lx %s: period++ [ip: %#Lx, %#Lx] => %Ld\n", self->ms.sym->start, | 983 | pr_debug3("%#" PRIx64 " %s: period++ [ip: %#" PRIx64 ", %#" PRIx64 |
| 984 | self->ms.sym->name, ip, ip - self->ms.sym->start, h->ip[offset]); | 984 | "] => %" PRIu64 "\n", self->ms.sym->start, self->ms.sym->name, |
| 985 | ip, ip - self->ms.sym->start, h->ip[offset]); | ||
| 985 | return 0; | 986 | return 0; |
| 986 | } | 987 | } |
| 987 | 988 | ||
| @@ -1132,7 +1133,7 @@ fallback: | |||
| 1132 | goto out_free_filename; | 1133 | goto out_free_filename; |
| 1133 | } | 1134 | } |
| 1134 | 1135 | ||
| 1135 | pr_debug("%s: filename=%s, sym=%s, start=%#Lx, end=%#Lx\n", __func__, | 1136 | pr_debug("%s: filename=%s, sym=%s, start=%#" PRIx64 ", end=%#" PRIx64 "\n", __func__, |
| 1136 | filename, sym->name, map->unmap_ip(map, sym->start), | 1137 | filename, sym->name, map->unmap_ip(map, sym->start), |
| 1137 | map->unmap_ip(map, sym->end)); | 1138 | map->unmap_ip(map, sym->end)); |
| 1138 | 1139 | ||
| @@ -1142,7 +1143,7 @@ fallback: | |||
| 1142 | dso, dso->long_name, sym, sym->name); | 1143 | dso, dso->long_name, sym, sym->name); |
| 1143 | 1144 | ||
| 1144 | snprintf(command, sizeof(command), | 1145 | snprintf(command, sizeof(command), |
| 1145 | "objdump --start-address=0x%016Lx --stop-address=0x%016Lx -dS -C %s|grep -v %s|expand", | 1146 | "objdump --start-address=0x%016" PRIx64 " --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand", |
| 1146 | map__rip_2objdump(map, sym->start), | 1147 | map__rip_2objdump(map, sym->start), |
| 1147 | map__rip_2objdump(map, sym->end), | 1148 | map__rip_2objdump(map, sym->end), |
| 1148 | symfs_filename, filename); | 1149 | symfs_filename, filename); |
diff --git a/tools/perf/util/include/linux/bitops.h b/tools/perf/util/include/linux/bitops.h index 8be0b968ca0b..305c8484f200 100644 --- a/tools/perf/util/include/linux/bitops.h +++ b/tools/perf/util/include/linux/bitops.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #define _PERF_LINUX_BITOPS_H_ | 2 | #define _PERF_LINUX_BITOPS_H_ |
| 3 | 3 | ||
| 4 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
| 5 | #include <linux/compiler.h> | ||
| 5 | #include <asm/hweight.h> | 6 | #include <asm/hweight.h> |
| 6 | 7 | ||
| 7 | #define BITS_PER_LONG __WORDSIZE | 8 | #define BITS_PER_LONG __WORDSIZE |
diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index 3a7eb6ec0eec..a16ecab5229d 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | #include "symbol.h" | 1 | #include "symbol.h" |
| 2 | #include <errno.h> | 2 | #include <errno.h> |
| 3 | #include <inttypes.h> | ||
| 3 | #include <limits.h> | 4 | #include <limits.h> |
| 4 | #include <stdlib.h> | 5 | #include <stdlib.h> |
| 5 | #include <string.h> | 6 | #include <string.h> |
| @@ -195,7 +196,7 @@ int map__overlap(struct map *l, struct map *r) | |||
| 195 | 196 | ||
| 196 | size_t map__fprintf(struct map *self, FILE *fp) | 197 | size_t map__fprintf(struct map *self, FILE *fp) |
| 197 | { | 198 | { |
| 198 | return fprintf(fp, " %Lx-%Lx %Lx %s\n", | 199 | return fprintf(fp, " %" PRIx64 "-%" PRIx64 " %" PRIx64 " %s\n", |
| 199 | self->start, self->end, self->pgoff, self->dso->name); | 200 | self->start, self->end, self->pgoff, self->dso->name); |
| 200 | } | 201 | } |
| 201 | 202 | ||
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index bc2732ee23eb..135f69baf966 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
| @@ -279,7 +279,7 @@ const char *__event_name(int type, u64 config) | |||
| 279 | static char buf[32]; | 279 | static char buf[32]; |
| 280 | 280 | ||
| 281 | if (type == PERF_TYPE_RAW) { | 281 | if (type == PERF_TYPE_RAW) { |
| 282 | sprintf(buf, "raw 0x%llx", config); | 282 | sprintf(buf, "raw 0x%" PRIx64, config); |
| 283 | return buf; | 283 | return buf; |
| 284 | } | 284 | } |
| 285 | 285 | ||
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index b82cafb83772..458e3ecf17af 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h | |||
| @@ -23,7 +23,7 @@ struct tracepoint_path { | |||
| 23 | }; | 23 | }; |
| 24 | 24 | ||
| 25 | extern struct tracepoint_path *tracepoint_id_to_path(u64 config); | 25 | extern struct tracepoint_path *tracepoint_id_to_path(u64 config); |
| 26 | extern bool have_tracepoints(struct list_head *evsel_list); | 26 | extern bool have_tracepoints(struct list_head *evlist); |
| 27 | 27 | ||
| 28 | extern int nr_counters; | 28 | extern int nr_counters; |
| 29 | 29 | ||
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 128aaab0aeda..6e29d9c9dccc 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
| @@ -172,7 +172,7 @@ static int kprobe_convert_to_perf_probe(struct probe_trace_point *tp, | |||
| 172 | sym = __find_kernel_function_by_name(tp->symbol, &map); | 172 | sym = __find_kernel_function_by_name(tp->symbol, &map); |
| 173 | if (sym) { | 173 | if (sym) { |
| 174 | addr = map->unmap_ip(map, sym->start + tp->offset); | 174 | addr = map->unmap_ip(map, sym->start + tp->offset); |
| 175 | pr_debug("try to find %s+%ld@%llx\n", tp->symbol, | 175 | pr_debug("try to find %s+%ld@%" PRIx64 "\n", tp->symbol, |
| 176 | tp->offset, addr); | 176 | tp->offset, addr); |
| 177 | ret = find_perf_probe_point((unsigned long)addr, pp); | 177 | ret = find_perf_probe_point((unsigned long)addr, pp); |
| 178 | } | 178 | } |
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 313dac2d94ce..105f00bfd555 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
| @@ -652,10 +652,11 @@ static void callchain__printf(struct sample_data *sample) | |||
| 652 | { | 652 | { |
| 653 | unsigned int i; | 653 | unsigned int i; |
| 654 | 654 | ||
| 655 | printf("... chain: nr:%Lu\n", sample->callchain->nr); | 655 | printf("... chain: nr:%" PRIu64 "\n", sample->callchain->nr); |
| 656 | 656 | ||
| 657 | for (i = 0; i < sample->callchain->nr; i++) | 657 | for (i = 0; i < sample->callchain->nr; i++) |
| 658 | printf("..... %2d: %016Lx\n", i, sample->callchain->ips[i]); | 658 | printf("..... %2d: %016" PRIx64 "\n", |
| 659 | i, sample->callchain->ips[i]); | ||
| 659 | } | 660 | } |
| 660 | 661 | ||
| 661 | static void perf_session__print_tstamp(struct perf_session *session, | 662 | static void perf_session__print_tstamp(struct perf_session *session, |
| @@ -672,7 +673,7 @@ static void perf_session__print_tstamp(struct perf_session *session, | |||
| 672 | printf("%u ", sample->cpu); | 673 | printf("%u ", sample->cpu); |
| 673 | 674 | ||
| 674 | if (session->sample_type & PERF_SAMPLE_TIME) | 675 | if (session->sample_type & PERF_SAMPLE_TIME) |
| 675 | printf("%Lu ", sample->time); | 676 | printf("%" PRIu64 " ", sample->time); |
| 676 | } | 677 | } |
| 677 | 678 | ||
| 678 | static void dump_event(struct perf_session *session, event_t *event, | 679 | static void dump_event(struct perf_session *session, event_t *event, |
| @@ -681,16 +682,16 @@ static void dump_event(struct perf_session *session, event_t *event, | |||
| 681 | if (!dump_trace) | 682 | if (!dump_trace) |
| 682 | return; | 683 | return; |
| 683 | 684 | ||
| 684 | printf("\n%#Lx [%#x]: event: %d\n", file_offset, event->header.size, | 685 | printf("\n%#" PRIx64 " [%#x]: event: %d\n", |
| 685 | event->header.type); | 686 | file_offset, event->header.size, event->header.type); |
| 686 | 687 | ||
| 687 | trace_event(event); | 688 | trace_event(event); |
| 688 | 689 | ||
| 689 | if (sample) | 690 | if (sample) |
| 690 | perf_session__print_tstamp(session, event, sample); | 691 | perf_session__print_tstamp(session, event, sample); |
| 691 | 692 | ||
| 692 | printf("%#Lx [%#x]: PERF_RECORD_%s", file_offset, event->header.size, | 693 | printf("%#" PRIx64 " [%#x]: PERF_RECORD_%s", file_offset, |
| 693 | event__get_event_name(event->header.type)); | 694 | event->header.size, event__get_event_name(event->header.type)); |
| 694 | } | 695 | } |
| 695 | 696 | ||
| 696 | static void dump_sample(struct perf_session *session, event_t *event, | 697 | static void dump_sample(struct perf_session *session, event_t *event, |
| @@ -699,8 +700,9 @@ static void dump_sample(struct perf_session *session, event_t *event, | |||
| 699 | if (!dump_trace) | 700 | if (!dump_trace) |
| 700 | return; | 701 | return; |
| 701 | 702 | ||
| 702 | printf("(IP, %d): %d/%d: %#Lx period: %Ld\n", event->header.misc, | 703 | printf("(IP, %d): %d/%d: %#" PRIx64 " period: %" PRIu64 "\n", |
| 703 | sample->pid, sample->tid, sample->ip, sample->period); | 704 | event->header.misc, sample->pid, sample->tid, sample->ip, |
| 705 | sample->period); | ||
| 704 | 706 | ||
| 705 | if (session->sample_type & PERF_SAMPLE_CALLCHAIN) | 707 | if (session->sample_type & PERF_SAMPLE_CALLCHAIN) |
| 706 | callchain__printf(sample); | 708 | callchain__printf(sample); |
| @@ -843,8 +845,8 @@ static void perf_session__warn_about_errors(const struct perf_session *session, | |||
| 843 | { | 845 | { |
| 844 | if (ops->lost == event__process_lost && | 846 | if (ops->lost == event__process_lost && |
| 845 | session->hists.stats.total_lost != 0) { | 847 | session->hists.stats.total_lost != 0) { |
| 846 | ui__warning("Processed %Lu events and LOST %Lu!\n\n" | 848 | ui__warning("Processed %" PRIu64 " events and LOST %" PRIu64 |
| 847 | "Check IO/CPU overload!\n\n", | 849 | "!\n\nCheck IO/CPU overload!\n\n", |
| 848 | session->hists.stats.total_period, | 850 | session->hists.stats.total_period, |
| 849 | session->hists.stats.total_lost); | 851 | session->hists.stats.total_lost); |
| 850 | } | 852 | } |
| @@ -918,7 +920,7 @@ more: | |||
| 918 | 920 | ||
| 919 | if (size == 0 || | 921 | if (size == 0 || |
| 920 | (skip = perf_session__process_event(self, &event, ops, head)) < 0) { | 922 | (skip = perf_session__process_event(self, &event, ops, head)) < 0) { |
| 921 | dump_printf("%#Lx [%#x]: skipping unknown header type: %d\n", | 923 | dump_printf("%#" PRIx64 " [%#x]: skipping unknown header type: %d\n", |
| 922 | head, event.header.size, event.header.type); | 924 | head, event.header.size, event.header.type); |
| 923 | /* | 925 | /* |
| 924 | * assume we lost track of the stream, check alignment, and | 926 | * assume we lost track of the stream, check alignment, and |
| @@ -1023,7 +1025,7 @@ more: | |||
| 1023 | 1025 | ||
| 1024 | if (size == 0 || | 1026 | if (size == 0 || |
| 1025 | perf_session__process_event(session, event, ops, file_pos) < 0) { | 1027 | perf_session__process_event(session, event, ops, file_pos) < 0) { |
| 1026 | dump_printf("%#Lx [%#x]: skipping unknown header type: %d\n", | 1028 | dump_printf("%#" PRIx64 " [%#x]: skipping unknown header type: %d\n", |
| 1027 | file_offset + head, event->header.size, | 1029 | file_offset + head, event->header.size, |
| 1028 | event->header.type); | 1030 | event->header.type); |
| 1029 | /* | 1031 | /* |
diff --git a/tools/perf/util/svghelper.c b/tools/perf/util/svghelper.c index b3637db025a2..fb737fe9be91 100644 --- a/tools/perf/util/svghelper.c +++ b/tools/perf/util/svghelper.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | * of the License. | 12 | * of the License. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <inttypes.h> | ||
| 15 | #include <stdio.h> | 16 | #include <stdio.h> |
| 16 | #include <stdlib.h> | 17 | #include <stdlib.h> |
| 17 | #include <unistd.h> | 18 | #include <unistd.h> |
| @@ -43,11 +44,11 @@ static double cpu2y(int cpu) | |||
| 43 | return cpu2slot(cpu) * SLOT_MULT; | 44 | return cpu2slot(cpu) * SLOT_MULT; |
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | static double time2pixels(u64 time) | 47 | static double time2pixels(u64 __time) |
| 47 | { | 48 | { |
| 48 | double X; | 49 | double X; |
| 49 | 50 | ||
| 50 | X = 1.0 * svg_page_width * (time - first_time) / (last_time - first_time); | 51 | X = 1.0 * svg_page_width * (__time - first_time) / (last_time - first_time); |
| 51 | return X; | 52 | return X; |
| 52 | } | 53 | } |
| 53 | 54 | ||
| @@ -94,7 +95,7 @@ void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end) | |||
| 94 | 95 | ||
| 95 | total_height = (1 + rows + cpu2slot(cpus)) * SLOT_MULT; | 96 | total_height = (1 + rows + cpu2slot(cpus)) * SLOT_MULT; |
| 96 | fprintf(svgfile, "<?xml version=\"1.0\" standalone=\"no\"?> \n"); | 97 | fprintf(svgfile, "<?xml version=\"1.0\" standalone=\"no\"?> \n"); |
| 97 | fprintf(svgfile, "<svg width=\"%i\" height=\"%llu\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n", svg_page_width, total_height); | 98 | fprintf(svgfile, "<svg width=\"%i\" height=\"%" PRIu64 "\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n", svg_page_width, total_height); |
| 98 | 99 | ||
| 99 | fprintf(svgfile, "<defs>\n <style type=\"text/css\">\n <![CDATA[\n"); | 100 | fprintf(svgfile, "<defs>\n <style type=\"text/css\">\n <![CDATA[\n"); |
| 100 | 101 | ||
| @@ -483,7 +484,7 @@ void svg_time_grid(void) | |||
| 483 | color = 128; | 484 | color = 128; |
| 484 | } | 485 | } |
| 485 | 486 | ||
| 486 | fprintf(svgfile, "<line x1=\"%4.8f\" y1=\"%4.2f\" x2=\"%4.8f\" y2=\"%llu\" style=\"stroke:rgb(%i,%i,%i);stroke-width:%1.3f\"/>\n", | 487 | fprintf(svgfile, "<line x1=\"%4.8f\" y1=\"%4.2f\" x2=\"%4.8f\" y2=\"%" PRIu64 "\" style=\"stroke:rgb(%i,%i,%i);stroke-width:%1.3f\"/>\n", |
| 487 | time2pixels(i), SLOT_MULT/2, time2pixels(i), total_height, color, color, color, thickness); | 488 | time2pixels(i), SLOT_MULT/2, time2pixels(i), total_height, color, color, color, thickness); |
| 488 | 489 | ||
| 489 | i += 10000000; | 490 | i += 10000000; |
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 15ccfba8cdf8..7821d0e6866f 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <sys/param.h> | 11 | #include <sys/param.h> |
| 12 | #include <fcntl.h> | 12 | #include <fcntl.h> |
| 13 | #include <unistd.h> | 13 | #include <unistd.h> |
| 14 | #include <inttypes.h> | ||
| 14 | #include "build-id.h" | 15 | #include "build-id.h" |
| 15 | #include "debug.h" | 16 | #include "debug.h" |
| 16 | #include "symbol.h" | 17 | #include "symbol.h" |
| @@ -153,7 +154,7 @@ static struct symbol *symbol__new(u64 start, u64 len, u8 binding, | |||
| 153 | self->binding = binding; | 154 | self->binding = binding; |
| 154 | self->namelen = namelen - 1; | 155 | self->namelen = namelen - 1; |
| 155 | 156 | ||
| 156 | pr_debug4("%s: %s %#Lx-%#Lx\n", __func__, name, start, self->end); | 157 | pr_debug4("%s: %s %#" PRIx64 "-%#" PRIx64 "\n", __func__, name, start, self->end); |
| 157 | 158 | ||
| 158 | memcpy(self->name, name, namelen); | 159 | memcpy(self->name, name, namelen); |
| 159 | 160 | ||
| @@ -167,7 +168,7 @@ void symbol__delete(struct symbol *self) | |||
| 167 | 168 | ||
| 168 | static size_t symbol__fprintf(struct symbol *self, FILE *fp) | 169 | static size_t symbol__fprintf(struct symbol *self, FILE *fp) |
| 169 | { | 170 | { |
| 170 | return fprintf(fp, " %llx-%llx %c %s\n", | 171 | return fprintf(fp, " %" PRIx64 "-%" PRIx64 " %c %s\n", |
| 171 | self->start, self->end, | 172 | self->start, self->end, |
| 172 | self->binding == STB_GLOBAL ? 'g' : | 173 | self->binding == STB_GLOBAL ? 'g' : |
| 173 | self->binding == STB_LOCAL ? 'l' : 'w', | 174 | self->binding == STB_LOCAL ? 'l' : 'w', |
| @@ -1161,6 +1162,13 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name, | |||
| 1161 | 1162 | ||
| 1162 | section_name = elf_sec__name(&shdr, secstrs); | 1163 | section_name = elf_sec__name(&shdr, secstrs); |
| 1163 | 1164 | ||
| 1165 | /* On ARM, symbols for thumb functions have 1 added to | ||
| 1166 | * the symbol address as a flag - remove it */ | ||
| 1167 | if ((ehdr.e_machine == EM_ARM) && | ||
| 1168 | (map->type == MAP__FUNCTION) && | ||
| 1169 | (sym.st_value & 1)) | ||
| 1170 | --sym.st_value; | ||
| 1171 | |||
| 1164 | if (self->kernel != DSO_TYPE_USER || kmodule) { | 1172 | if (self->kernel != DSO_TYPE_USER || kmodule) { |
| 1165 | char dso_name[PATH_MAX]; | 1173 | char dso_name[PATH_MAX]; |
| 1166 | 1174 | ||
| @@ -1208,8 +1216,8 @@ static int dso__load_sym(struct dso *self, struct map *map, const char *name, | |||
| 1208 | } | 1216 | } |
| 1209 | 1217 | ||
| 1210 | if (curr_dso->adjust_symbols) { | 1218 | if (curr_dso->adjust_symbols) { |
| 1211 | pr_debug4("%s: adjusting symbol: st_value: %#Lx " | 1219 | pr_debug4("%s: adjusting symbol: st_value: %#" PRIx64 " " |
| 1212 | "sh_addr: %#Lx sh_offset: %#Lx\n", __func__, | 1220 | "sh_addr: %#" PRIx64 " sh_offset: %#" PRIx64 "\n", __func__, |
| 1213 | (u64)sym.st_value, (u64)shdr.sh_addr, | 1221 | (u64)sym.st_value, (u64)shdr.sh_addr, |
| 1214 | (u64)shdr.sh_offset); | 1222 | (u64)shdr.sh_offset); |
| 1215 | sym.st_value -= shdr.sh_addr - shdr.sh_offset; | 1223 | sym.st_value -= shdr.sh_addr - shdr.sh_offset; |
diff --git a/tools/perf/util/types.h b/tools/perf/util/types.h index 7d6b8331f898..5f3689a3d085 100644 --- a/tools/perf/util/types.h +++ b/tools/perf/util/types.h | |||
| @@ -1,12 +1,14 @@ | |||
| 1 | #ifndef __PERF_TYPES_H | 1 | #ifndef __PERF_TYPES_H |
| 2 | #define __PERF_TYPES_H | 2 | #define __PERF_TYPES_H |
| 3 | 3 | ||
| 4 | #include <stdint.h> | ||
| 5 | |||
| 4 | /* | 6 | /* |
| 5 | * We define u64 as unsigned long long for every architecture | 7 | * We define u64 as uint64_t for every architecture |
| 6 | * so that we can print it with %Lx without getting warnings. | 8 | * so that we can print it with "%"PRIx64 without getting warnings. |
| 7 | */ | 9 | */ |
| 8 | typedef unsigned long long u64; | 10 | typedef uint64_t u64; |
| 9 | typedef signed long long s64; | 11 | typedef int64_t s64; |
| 10 | typedef unsigned int u32; | 12 | typedef unsigned int u32; |
| 11 | typedef signed int s32; | 13 | typedef signed int s32; |
| 12 | typedef unsigned short u16; | 14 | typedef unsigned short u16; |
diff --git a/tools/perf/util/ui/browsers/hists.c b/tools/perf/util/ui/browsers/hists.c index ebda8c3fde9e..60c463c16028 100644 --- a/tools/perf/util/ui/browsers/hists.c +++ b/tools/perf/util/ui/browsers/hists.c | |||
| @@ -350,7 +350,7 @@ static char *callchain_list__sym_name(struct callchain_list *self, | |||
| 350 | if (self->ms.sym) | 350 | if (self->ms.sym) |
| 351 | return self->ms.sym->name; | 351 | return self->ms.sym->name; |
| 352 | 352 | ||
| 353 | snprintf(bf, bfsize, "%#Lx", self->ip); | 353 | snprintf(bf, bfsize, "%#" PRIx64, self->ip); |
| 354 | return bf; | 354 | return bf; |
| 355 | } | 355 | } |
| 356 | 356 | ||
diff --git a/tools/perf/util/ui/browsers/map.c b/tools/perf/util/ui/browsers/map.c index e35437dfa5b4..e5158369106e 100644 --- a/tools/perf/util/ui/browsers/map.c +++ b/tools/perf/util/ui/browsers/map.c | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | #include "../libslang.h" | 1 | #include "../libslang.h" |
| 2 | #include <elf.h> | 2 | #include <elf.h> |
| 3 | #include <inttypes.h> | ||
| 3 | #include <sys/ttydefaults.h> | 4 | #include <sys/ttydefaults.h> |
| 4 | #include <ctype.h> | 5 | #include <ctype.h> |
| 5 | #include <string.h> | 6 | #include <string.h> |
| @@ -57,7 +58,7 @@ static void map_browser__write(struct ui_browser *self, void *nd, int row) | |||
| 57 | int width; | 58 | int width; |
| 58 | 59 | ||
| 59 | ui_browser__set_percent_color(self, 0, current_entry); | 60 | ui_browser__set_percent_color(self, 0, current_entry); |
| 60 | slsmg_printf("%*llx %*llx %c ", | 61 | slsmg_printf("%*" PRIx64 " %*" PRIx64 " %c ", |
| 61 | mb->addrlen, sym->start, mb->addrlen, sym->end, | 62 | mb->addrlen, sym->start, mb->addrlen, sym->end, |
| 62 | sym->binding == STB_GLOBAL ? 'g' : | 63 | sym->binding == STB_GLOBAL ? 'g' : |
| 63 | sym->binding == STB_LOCAL ? 'l' : 'w'); | 64 | sym->binding == STB_LOCAL ? 'l' : 'w'); |
| @@ -150,6 +151,6 @@ int map__browse(struct map *self) | |||
| 150 | ++mb.b.nr_entries; | 151 | ++mb.b.nr_entries; |
| 151 | } | 152 | } |
| 152 | 153 | ||
| 153 | mb.addrlen = snprintf(tmp, sizeof(tmp), "%llx", maxaddr); | 154 | mb.addrlen = snprintf(tmp, sizeof(tmp), "%" PRIx64, maxaddr); |
| 154 | return map_browser__run(&mb); | 155 | return map_browser__run(&mb); |
| 155 | } | 156 | } |
diff --git a/tools/perf/util/values.c b/tools/perf/util/values.c index cfa55d686e3b..bdd33470b235 100644 --- a/tools/perf/util/values.c +++ b/tools/perf/util/values.c | |||
| @@ -150,7 +150,7 @@ static void perf_read_values__display_pretty(FILE *fp, | |||
| 150 | if (width > tidwidth) | 150 | if (width > tidwidth) |
| 151 | tidwidth = width; | 151 | tidwidth = width; |
| 152 | for (j = 0; j < values->counters; j++) { | 152 | for (j = 0; j < values->counters; j++) { |
| 153 | width = snprintf(NULL, 0, "%Lu", values->value[i][j]); | 153 | width = snprintf(NULL, 0, "%" PRIu64, values->value[i][j]); |
| 154 | if (width > counterwidth[j]) | 154 | if (width > counterwidth[j]) |
| 155 | counterwidth[j] = width; | 155 | counterwidth[j] = width; |
| 156 | } | 156 | } |
| @@ -165,7 +165,7 @@ static void perf_read_values__display_pretty(FILE *fp, | |||
| 165 | fprintf(fp, " %*d %*d", pidwidth, values->pid[i], | 165 | fprintf(fp, " %*d %*d", pidwidth, values->pid[i], |
| 166 | tidwidth, values->tid[i]); | 166 | tidwidth, values->tid[i]); |
| 167 | for (j = 0; j < values->counters; j++) | 167 | for (j = 0; j < values->counters; j++) |
| 168 | fprintf(fp, " %*Lu", | 168 | fprintf(fp, " %*" PRIu64, |
| 169 | counterwidth[j], values->value[i][j]); | 169 | counterwidth[j], values->value[i][j]); |
| 170 | fprintf(fp, "\n"); | 170 | fprintf(fp, "\n"); |
| 171 | } | 171 | } |
| @@ -196,13 +196,13 @@ static void perf_read_values__display_raw(FILE *fp, | |||
| 196 | width = strlen(values->countername[j]); | 196 | width = strlen(values->countername[j]); |
| 197 | if (width > namewidth) | 197 | if (width > namewidth) |
| 198 | namewidth = width; | 198 | namewidth = width; |
| 199 | width = snprintf(NULL, 0, "%llx", values->counterrawid[j]); | 199 | width = snprintf(NULL, 0, "%" PRIx64, values->counterrawid[j]); |
| 200 | if (width > rawwidth) | 200 | if (width > rawwidth) |
| 201 | rawwidth = width; | 201 | rawwidth = width; |
| 202 | } | 202 | } |
| 203 | for (i = 0; i < values->threads; i++) { | 203 | for (i = 0; i < values->threads; i++) { |
| 204 | for (j = 0; j < values->counters; j++) { | 204 | for (j = 0; j < values->counters; j++) { |
| 205 | width = snprintf(NULL, 0, "%Lu", values->value[i][j]); | 205 | width = snprintf(NULL, 0, "%" PRIu64, values->value[i][j]); |
| 206 | if (width > countwidth) | 206 | if (width > countwidth) |
| 207 | countwidth = width; | 207 | countwidth = width; |
| 208 | } | 208 | } |
| @@ -214,7 +214,7 @@ static void perf_read_values__display_raw(FILE *fp, | |||
| 214 | countwidth, "Count"); | 214 | countwidth, "Count"); |
| 215 | for (i = 0; i < values->threads; i++) | 215 | for (i = 0; i < values->threads; i++) |
| 216 | for (j = 0; j < values->counters; j++) | 216 | for (j = 0; j < values->counters; j++) |
| 217 | fprintf(fp, " %*d %*d %*s %*llx %*Lu\n", | 217 | fprintf(fp, " %*d %*d %*s %*" PRIx64 " %*" PRIu64, |
| 218 | pidwidth, values->pid[i], | 218 | pidwidth, values->pid[i], |
| 219 | tidwidth, values->tid[i], | 219 | tidwidth, values->tid[i], |
| 220 | namewidth, values->countername[j], | 220 | namewidth, values->countername[j], |
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c index 4c6983de6fd9..362a0cb448db 100644 --- a/tools/power/x86/turbostat/turbostat.c +++ b/tools/power/x86/turbostat/turbostat.c | |||
| @@ -72,7 +72,7 @@ int need_reinitialize; | |||
| 72 | 72 | ||
| 73 | int num_cpus; | 73 | int num_cpus; |
| 74 | 74 | ||
| 75 | typedef struct per_cpu_counters { | 75 | struct counters { |
| 76 | unsigned long long tsc; /* per thread */ | 76 | unsigned long long tsc; /* per thread */ |
| 77 | unsigned long long aperf; /* per thread */ | 77 | unsigned long long aperf; /* per thread */ |
| 78 | unsigned long long mperf; /* per thread */ | 78 | unsigned long long mperf; /* per thread */ |
| @@ -88,13 +88,13 @@ typedef struct per_cpu_counters { | |||
| 88 | int pkg; | 88 | int pkg; |
| 89 | int core; | 89 | int core; |
| 90 | int cpu; | 90 | int cpu; |
| 91 | struct per_cpu_counters *next; | 91 | struct counters *next; |
| 92 | } PCC; | 92 | }; |
| 93 | 93 | ||
| 94 | PCC *pcc_even; | 94 | struct counters *cnt_even; |
| 95 | PCC *pcc_odd; | 95 | struct counters *cnt_odd; |
| 96 | PCC *pcc_delta; | 96 | struct counters *cnt_delta; |
| 97 | PCC *pcc_average; | 97 | struct counters *cnt_average; |
| 98 | struct timeval tv_even; | 98 | struct timeval tv_even; |
| 99 | struct timeval tv_odd; | 99 | struct timeval tv_odd; |
| 100 | struct timeval tv_delta; | 100 | struct timeval tv_delta; |
| @@ -125,7 +125,7 @@ unsigned long long get_msr(int cpu, off_t offset) | |||
| 125 | return msr; | 125 | return msr; |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | void print_header() | 128 | void print_header(void) |
| 129 | { | 129 | { |
| 130 | if (show_pkg) | 130 | if (show_pkg) |
| 131 | fprintf(stderr, "pkg "); | 131 | fprintf(stderr, "pkg "); |
| @@ -160,39 +160,39 @@ void print_header() | |||
| 160 | putc('\n', stderr); | 160 | putc('\n', stderr); |
| 161 | } | 161 | } |
| 162 | 162 | ||
| 163 | void dump_pcc(PCC *pcc) | 163 | void dump_cnt(struct counters *cnt) |
| 164 | { | 164 | { |
| 165 | fprintf(stderr, "package: %d ", pcc->pkg); | 165 | fprintf(stderr, "package: %d ", cnt->pkg); |
| 166 | fprintf(stderr, "core:: %d ", pcc->core); | 166 | fprintf(stderr, "core:: %d ", cnt->core); |
| 167 | fprintf(stderr, "CPU: %d ", pcc->cpu); | 167 | fprintf(stderr, "CPU: %d ", cnt->cpu); |
| 168 | fprintf(stderr, "TSC: %016llX\n", pcc->tsc); | 168 | fprintf(stderr, "TSC: %016llX\n", cnt->tsc); |
| 169 | fprintf(stderr, "c3: %016llX\n", pcc->c3); | 169 | fprintf(stderr, "c3: %016llX\n", cnt->c3); |
| 170 | fprintf(stderr, "c6: %016llX\n", pcc->c6); | 170 | fprintf(stderr, "c6: %016llX\n", cnt->c6); |
| 171 | fprintf(stderr, "c7: %016llX\n", pcc->c7); | 171 | fprintf(stderr, "c7: %016llX\n", cnt->c7); |
| 172 | fprintf(stderr, "aperf: %016llX\n", pcc->aperf); | 172 | fprintf(stderr, "aperf: %016llX\n", cnt->aperf); |
| 173 | fprintf(stderr, "pc2: %016llX\n", pcc->pc2); | 173 | fprintf(stderr, "pc2: %016llX\n", cnt->pc2); |
| 174 | fprintf(stderr, "pc3: %016llX\n", pcc->pc3); | 174 | fprintf(stderr, "pc3: %016llX\n", cnt->pc3); |
| 175 | fprintf(stderr, "pc6: %016llX\n", pcc->pc6); | 175 | fprintf(stderr, "pc6: %016llX\n", cnt->pc6); |
| 176 | fprintf(stderr, "pc7: %016llX\n", pcc->pc7); | 176 | fprintf(stderr, "pc7: %016llX\n", cnt->pc7); |
| 177 | fprintf(stderr, "msr0x%x: %016llX\n", extra_msr_offset, pcc->extra_msr); | 177 | fprintf(stderr, "msr0x%x: %016llX\n", extra_msr_offset, cnt->extra_msr); |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | void dump_list(PCC *pcc) | 180 | void dump_list(struct counters *cnt) |
| 181 | { | 181 | { |
| 182 | printf("dump_list 0x%p\n", pcc); | 182 | printf("dump_list 0x%p\n", cnt); |
| 183 | 183 | ||
| 184 | for (; pcc; pcc = pcc->next) | 184 | for (; cnt; cnt = cnt->next) |
| 185 | dump_pcc(pcc); | 185 | dump_cnt(cnt); |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | void print_pcc(PCC *p) | 188 | void print_cnt(struct counters *p) |
| 189 | { | 189 | { |
| 190 | double interval_float; | 190 | double interval_float; |
| 191 | 191 | ||
| 192 | interval_float = tv_delta.tv_sec + tv_delta.tv_usec/1000000.0; | 192 | interval_float = tv_delta.tv_sec + tv_delta.tv_usec/1000000.0; |
| 193 | 193 | ||
| 194 | /* topology columns, print blanks on 1st (average) line */ | 194 | /* topology columns, print blanks on 1st (average) line */ |
| 195 | if (p == pcc_average) { | 195 | if (p == cnt_average) { |
| 196 | if (show_pkg) | 196 | if (show_pkg) |
| 197 | fprintf(stderr, " "); | 197 | fprintf(stderr, " "); |
| 198 | if (show_core) | 198 | if (show_core) |
| @@ -262,24 +262,24 @@ void print_pcc(PCC *p) | |||
| 262 | putc('\n', stderr); | 262 | putc('\n', stderr); |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | void print_counters(PCC *cnt) | 265 | void print_counters(struct counters *counters) |
| 266 | { | 266 | { |
| 267 | PCC *pcc; | 267 | struct counters *cnt; |
| 268 | 268 | ||
| 269 | print_header(); | 269 | print_header(); |
| 270 | 270 | ||
| 271 | if (num_cpus > 1) | 271 | if (num_cpus > 1) |
| 272 | print_pcc(pcc_average); | 272 | print_cnt(cnt_average); |
| 273 | 273 | ||
| 274 | for (pcc = cnt; pcc != NULL; pcc = pcc->next) | 274 | for (cnt = counters; cnt != NULL; cnt = cnt->next) |
| 275 | print_pcc(pcc); | 275 | print_cnt(cnt); |
| 276 | 276 | ||
| 277 | } | 277 | } |
| 278 | 278 | ||
| 279 | #define SUBTRACT_COUNTER(after, before, delta) (delta = (after - before), (before > after)) | 279 | #define SUBTRACT_COUNTER(after, before, delta) (delta = (after - before), (before > after)) |
| 280 | 280 | ||
| 281 | 281 | int compute_delta(struct counters *after, | |
| 282 | int compute_delta(PCC *after, PCC *before, PCC *delta) | 282 | struct counters *before, struct counters *delta) |
| 283 | { | 283 | { |
| 284 | int errors = 0; | 284 | int errors = 0; |
| 285 | int perf_err = 0; | 285 | int perf_err = 0; |
| @@ -391,20 +391,20 @@ int compute_delta(PCC *after, PCC *before, PCC *delta) | |||
| 391 | delta->extra_msr = after->extra_msr; | 391 | delta->extra_msr = after->extra_msr; |
| 392 | if (errors) { | 392 | if (errors) { |
| 393 | fprintf(stderr, "ERROR cpu%d before:\n", before->cpu); | 393 | fprintf(stderr, "ERROR cpu%d before:\n", before->cpu); |
| 394 | dump_pcc(before); | 394 | dump_cnt(before); |
| 395 | fprintf(stderr, "ERROR cpu%d after:\n", before->cpu); | 395 | fprintf(stderr, "ERROR cpu%d after:\n", before->cpu); |
| 396 | dump_pcc(after); | 396 | dump_cnt(after); |
| 397 | errors = 0; | 397 | errors = 0; |
| 398 | } | 398 | } |
| 399 | } | 399 | } |
| 400 | return 0; | 400 | return 0; |
| 401 | } | 401 | } |
| 402 | 402 | ||
| 403 | void compute_average(PCC *delta, PCC *avg) | 403 | void compute_average(struct counters *delta, struct counters *avg) |
| 404 | { | 404 | { |
| 405 | PCC *sum; | 405 | struct counters *sum; |
| 406 | 406 | ||
| 407 | sum = calloc(1, sizeof(PCC)); | 407 | sum = calloc(1, sizeof(struct counters)); |
| 408 | if (sum == NULL) { | 408 | if (sum == NULL) { |
| 409 | perror("calloc sum"); | 409 | perror("calloc sum"); |
| 410 | exit(1); | 410 | exit(1); |
| @@ -438,35 +438,34 @@ void compute_average(PCC *delta, PCC *avg) | |||
| 438 | free(sum); | 438 | free(sum); |
| 439 | } | 439 | } |
| 440 | 440 | ||
| 441 | void get_counters(PCC *pcc) | 441 | void get_counters(struct counters *cnt) |
| 442 | { | 442 | { |
| 443 | for ( ; pcc; pcc = pcc->next) { | 443 | for ( ; cnt; cnt = cnt->next) { |
| 444 | pcc->tsc = get_msr(pcc->cpu, MSR_TSC); | 444 | cnt->tsc = get_msr(cnt->cpu, MSR_TSC); |
| 445 | if (do_nhm_cstates) | 445 | if (do_nhm_cstates) |
| 446 | pcc->c3 = get_msr(pcc->cpu, MSR_CORE_C3_RESIDENCY); | 446 | cnt->c3 = get_msr(cnt->cpu, MSR_CORE_C3_RESIDENCY); |
| 447 | if (do_nhm_cstates) | 447 | if (do_nhm_cstates) |
| 448 | pcc->c6 = get_msr(pcc->cpu, MSR_CORE_C6_RESIDENCY); | 448 | cnt->c6 = get_msr(cnt->cpu, MSR_CORE_C6_RESIDENCY); |
| 449 | if (do_snb_cstates) | 449 | if (do_snb_cstates) |
| 450 | pcc->c7 = get_msr(pcc->cpu, MSR_CORE_C7_RESIDENCY); | 450 | cnt->c7 = get_msr(cnt->cpu, MSR_CORE_C7_RESIDENCY); |
| 451 | if (has_aperf) | 451 | if (has_aperf) |
| 452 | pcc->aperf = get_msr(pcc->cpu, MSR_APERF); | 452 | cnt->aperf = get_msr(cnt->cpu, MSR_APERF); |
| 453 | if (has_aperf) | 453 | if (has_aperf) |
| 454 | pcc->mperf = get_msr(pcc->cpu, MSR_MPERF); | 454 | cnt->mperf = get_msr(cnt->cpu, MSR_MPERF); |
| 455 | if (do_snb_cstates) | 455 | if (do_snb_cstates) |
| 456 | pcc->pc2 = get_msr(pcc->cpu, MSR_PKG_C2_RESIDENCY); | 456 | cnt->pc2 = get_msr(cnt->cpu, MSR_PKG_C2_RESIDENCY); |
| 457 | if (do_nhm_cstates) | 457 | if (do_nhm_cstates) |
| 458 | pcc->pc3 = get_msr(pcc->cpu, MSR_PKG_C3_RESIDENCY); | 458 | cnt->pc3 = get_msr(cnt->cpu, MSR_PKG_C3_RESIDENCY); |
| 459 | if (do_nhm_cstates) | 459 | if (do_nhm_cstates) |
| 460 | pcc->pc6 = get_msr(pcc->cpu, MSR_PKG_C6_RESIDENCY); | 460 | cnt->pc6 = get_msr(cnt->cpu, MSR_PKG_C6_RESIDENCY); |
| 461 | if (do_snb_cstates) | 461 | if (do_snb_cstates) |
| 462 | pcc->pc7 = get_msr(pcc->cpu, MSR_PKG_C7_RESIDENCY); | 462 | cnt->pc7 = get_msr(cnt->cpu, MSR_PKG_C7_RESIDENCY); |
| 463 | if (extra_msr_offset) | 463 | if (extra_msr_offset) |
| 464 | pcc->extra_msr = get_msr(pcc->cpu, extra_msr_offset); | 464 | cnt->extra_msr = get_msr(cnt->cpu, extra_msr_offset); |
| 465 | } | 465 | } |
| 466 | } | 466 | } |
| 467 | 467 | ||
| 468 | 468 | void print_nehalem_info(void) | |
| 469 | void print_nehalem_info() | ||
| 470 | { | 469 | { |
| 471 | unsigned long long msr; | 470 | unsigned long long msr; |
| 472 | unsigned int ratio; | 471 | unsigned int ratio; |
| @@ -514,38 +513,38 @@ void print_nehalem_info() | |||
| 514 | 513 | ||
| 515 | } | 514 | } |
| 516 | 515 | ||
| 517 | void free_counter_list(PCC *list) | 516 | void free_counter_list(struct counters *list) |
| 518 | { | 517 | { |
| 519 | PCC *p; | 518 | struct counters *p; |
| 520 | 519 | ||
| 521 | for (p = list; p; ) { | 520 | for (p = list; p; ) { |
| 522 | PCC *free_me; | 521 | struct counters *free_me; |
| 523 | 522 | ||
| 524 | free_me = p; | 523 | free_me = p; |
| 525 | p = p->next; | 524 | p = p->next; |
| 526 | free(free_me); | 525 | free(free_me); |
| 527 | } | 526 | } |
| 528 | return; | ||
| 529 | } | 527 | } |
| 530 | 528 | ||
| 531 | void free_all_counters(void) | 529 | void free_all_counters(void) |
| 532 | { | 530 | { |
| 533 | free_counter_list(pcc_even); | 531 | free_counter_list(cnt_even); |
| 534 | pcc_even = NULL; | 532 | cnt_even = NULL; |
| 535 | 533 | ||
| 536 | free_counter_list(pcc_odd); | 534 | free_counter_list(cnt_odd); |
| 537 | pcc_odd = NULL; | 535 | cnt_odd = NULL; |
| 538 | 536 | ||
| 539 | free_counter_list(pcc_delta); | 537 | free_counter_list(cnt_delta); |
| 540 | pcc_delta = NULL; | 538 | cnt_delta = NULL; |
| 541 | 539 | ||
| 542 | free_counter_list(pcc_average); | 540 | free_counter_list(cnt_average); |
| 543 | pcc_average = NULL; | 541 | cnt_average = NULL; |
| 544 | } | 542 | } |
| 545 | 543 | ||
| 546 | void insert_cpu_counters(PCC **list, PCC *new) | 544 | void insert_counters(struct counters **list, |
| 545 | struct counters *new) | ||
| 547 | { | 546 | { |
| 548 | PCC *prev; | 547 | struct counters *prev; |
| 549 | 548 | ||
| 550 | /* | 549 | /* |
| 551 | * list was empty | 550 | * list was empty |
| @@ -594,18 +593,16 @@ void insert_cpu_counters(PCC **list, PCC *new) | |||
| 594 | */ | 593 | */ |
| 595 | new->next = prev->next; | 594 | new->next = prev->next; |
| 596 | prev->next = new; | 595 | prev->next = new; |
| 597 | |||
| 598 | return; | ||
| 599 | } | 596 | } |
| 600 | 597 | ||
| 601 | void alloc_new_cpu_counters(int pkg, int core, int cpu) | 598 | void alloc_new_counters(int pkg, int core, int cpu) |
| 602 | { | 599 | { |
| 603 | PCC *new; | 600 | struct counters *new; |
| 604 | 601 | ||
| 605 | if (verbose > 1) | 602 | if (verbose > 1) |
| 606 | printf("pkg%d core%d, cpu%d\n", pkg, core, cpu); | 603 | printf("pkg%d core%d, cpu%d\n", pkg, core, cpu); |
| 607 | 604 | ||
| 608 | new = (PCC *)calloc(1, sizeof(PCC)); | 605 | new = (struct counters *)calloc(1, sizeof(struct counters)); |
| 609 | if (new == NULL) { | 606 | if (new == NULL) { |
| 610 | perror("calloc"); | 607 | perror("calloc"); |
| 611 | exit(1); | 608 | exit(1); |
| @@ -613,9 +610,10 @@ void alloc_new_cpu_counters(int pkg, int core, int cpu) | |||
| 613 | new->pkg = pkg; | 610 | new->pkg = pkg; |
| 614 | new->core = core; | 611 | new->core = core; |
| 615 | new->cpu = cpu; | 612 | new->cpu = cpu; |
| 616 | insert_cpu_counters(&pcc_odd, new); | 613 | insert_counters(&cnt_odd, new); |
| 617 | 614 | ||
| 618 | new = (PCC *)calloc(1, sizeof(PCC)); | 615 | new = (struct counters *)calloc(1, |
| 616 | sizeof(struct counters)); | ||
| 619 | if (new == NULL) { | 617 | if (new == NULL) { |
| 620 | perror("calloc"); | 618 | perror("calloc"); |
| 621 | exit(1); | 619 | exit(1); |
| @@ -623,9 +621,9 @@ void alloc_new_cpu_counters(int pkg, int core, int cpu) | |||
| 623 | new->pkg = pkg; | 621 | new->pkg = pkg; |
| 624 | new->core = core; | 622 | new->core = core; |
| 625 | new->cpu = cpu; | 623 | new->cpu = cpu; |
| 626 | insert_cpu_counters(&pcc_even, new); | 624 | insert_counters(&cnt_even, new); |
| 627 | 625 | ||
| 628 | new = (PCC *)calloc(1, sizeof(PCC)); | 626 | new = (struct counters *)calloc(1, sizeof(struct counters)); |
| 629 | if (new == NULL) { | 627 | if (new == NULL) { |
| 630 | perror("calloc"); | 628 | perror("calloc"); |
| 631 | exit(1); | 629 | exit(1); |
| @@ -633,9 +631,9 @@ void alloc_new_cpu_counters(int pkg, int core, int cpu) | |||
| 633 | new->pkg = pkg; | 631 | new->pkg = pkg; |
| 634 | new->core = core; | 632 | new->core = core; |
| 635 | new->cpu = cpu; | 633 | new->cpu = cpu; |
| 636 | insert_cpu_counters(&pcc_delta, new); | 634 | insert_counters(&cnt_delta, new); |
| 637 | 635 | ||
| 638 | new = (PCC *)calloc(1, sizeof(PCC)); | 636 | new = (struct counters *)calloc(1, sizeof(struct counters)); |
| 639 | if (new == NULL) { | 637 | if (new == NULL) { |
| 640 | perror("calloc"); | 638 | perror("calloc"); |
| 641 | exit(1); | 639 | exit(1); |
| @@ -643,7 +641,7 @@ void alloc_new_cpu_counters(int pkg, int core, int cpu) | |||
| 643 | new->pkg = pkg; | 641 | new->pkg = pkg; |
| 644 | new->core = core; | 642 | new->core = core; |
| 645 | new->cpu = cpu; | 643 | new->cpu = cpu; |
| 646 | pcc_average = new; | 644 | cnt_average = new; |
| 647 | } | 645 | } |
| 648 | 646 | ||
| 649 | int get_physical_package_id(int cpu) | 647 | int get_physical_package_id(int cpu) |
| @@ -719,7 +717,7 @@ void re_initialize(void) | |||
| 719 | { | 717 | { |
| 720 | printf("turbostat: topology changed, re-initializing.\n"); | 718 | printf("turbostat: topology changed, re-initializing.\n"); |
| 721 | free_all_counters(); | 719 | free_all_counters(); |
| 722 | num_cpus = for_all_cpus(alloc_new_cpu_counters); | 720 | num_cpus = for_all_cpus(alloc_new_counters); |
| 723 | need_reinitialize = 0; | 721 | need_reinitialize = 0; |
| 724 | printf("num_cpus is now %d\n", num_cpus); | 722 | printf("num_cpus is now %d\n", num_cpus); |
| 725 | } | 723 | } |
| @@ -728,7 +726,7 @@ void dummy(int pkg, int core, int cpu) { return; } | |||
| 728 | /* | 726 | /* |
| 729 | * check to see if a cpu came on-line | 727 | * check to see if a cpu came on-line |
| 730 | */ | 728 | */ |
| 731 | void verify_num_cpus() | 729 | void verify_num_cpus(void) |
| 732 | { | 730 | { |
| 733 | int new_num_cpus; | 731 | int new_num_cpus; |
| 734 | 732 | ||
| @@ -740,14 +738,12 @@ void verify_num_cpus() | |||
| 740 | num_cpus, new_num_cpus); | 738 | num_cpus, new_num_cpus); |
| 741 | need_reinitialize = 1; | 739 | need_reinitialize = 1; |
| 742 | } | 740 | } |
| 743 | |||
| 744 | return; | ||
| 745 | } | 741 | } |
| 746 | 742 | ||
| 747 | void turbostat_loop() | 743 | void turbostat_loop() |
| 748 | { | 744 | { |
| 749 | restart: | 745 | restart: |
| 750 | get_counters(pcc_even); | 746 | get_counters(cnt_even); |
| 751 | gettimeofday(&tv_even, (struct timezone *)NULL); | 747 | gettimeofday(&tv_even, (struct timezone *)NULL); |
| 752 | 748 | ||
| 753 | while (1) { | 749 | while (1) { |
| @@ -757,24 +753,24 @@ restart: | |||
| 757 | goto restart; | 753 | goto restart; |
| 758 | } | 754 | } |
| 759 | sleep(interval_sec); | 755 | sleep(interval_sec); |
| 760 | get_counters(pcc_odd); | 756 | get_counters(cnt_odd); |
| 761 | gettimeofday(&tv_odd, (struct timezone *)NULL); | 757 | gettimeofday(&tv_odd, (struct timezone *)NULL); |
| 762 | 758 | ||
| 763 | compute_delta(pcc_odd, pcc_even, pcc_delta); | 759 | compute_delta(cnt_odd, cnt_even, cnt_delta); |
| 764 | timersub(&tv_odd, &tv_even, &tv_delta); | 760 | timersub(&tv_odd, &tv_even, &tv_delta); |
| 765 | compute_average(pcc_delta, pcc_average); | 761 | compute_average(cnt_delta, cnt_average); |
| 766 | print_counters(pcc_delta); | 762 | print_counters(cnt_delta); |
| 767 | if (need_reinitialize) { | 763 | if (need_reinitialize) { |
| 768 | re_initialize(); | 764 | re_initialize(); |
| 769 | goto restart; | 765 | goto restart; |
| 770 | } | 766 | } |
| 771 | sleep(interval_sec); | 767 | sleep(interval_sec); |
| 772 | get_counters(pcc_even); | 768 | get_counters(cnt_even); |
| 773 | gettimeofday(&tv_even, (struct timezone *)NULL); | 769 | gettimeofday(&tv_even, (struct timezone *)NULL); |
| 774 | compute_delta(pcc_even, pcc_odd, pcc_delta); | 770 | compute_delta(cnt_even, cnt_odd, cnt_delta); |
| 775 | timersub(&tv_even, &tv_odd, &tv_delta); | 771 | timersub(&tv_even, &tv_odd, &tv_delta); |
| 776 | compute_average(pcc_delta, pcc_average); | 772 | compute_average(cnt_delta, cnt_average); |
| 777 | print_counters(pcc_delta); | 773 | print_counters(cnt_delta); |
| 778 | } | 774 | } |
| 779 | } | 775 | } |
| 780 | 776 | ||
| @@ -892,7 +888,7 @@ void check_cpuid() | |||
| 892 | * this check is valid for both Intel and AMD | 888 | * this check is valid for both Intel and AMD |
| 893 | */ | 889 | */ |
| 894 | asm("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (0x80000007)); | 890 | asm("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (0x80000007)); |
| 895 | has_invariant_tsc = edx && (1 << 8); | 891 | has_invariant_tsc = edx & (1 << 8); |
| 896 | 892 | ||
| 897 | if (!has_invariant_tsc) { | 893 | if (!has_invariant_tsc) { |
| 898 | fprintf(stderr, "No invariant TSC\n"); | 894 | fprintf(stderr, "No invariant TSC\n"); |
| @@ -905,7 +901,7 @@ void check_cpuid() | |||
| 905 | */ | 901 | */ |
| 906 | 902 | ||
| 907 | asm("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (0x6)); | 903 | asm("cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (0x6)); |
| 908 | has_aperf = ecx && (1 << 0); | 904 | has_aperf = ecx & (1 << 0); |
| 909 | if (!has_aperf) { | 905 | if (!has_aperf) { |
| 910 | fprintf(stderr, "No APERF MSR\n"); | 906 | fprintf(stderr, "No APERF MSR\n"); |
| 911 | exit(1); | 907 | exit(1); |
| @@ -952,7 +948,7 @@ void turbostat_init() | |||
| 952 | check_dev_msr(); | 948 | check_dev_msr(); |
| 953 | check_super_user(); | 949 | check_super_user(); |
| 954 | 950 | ||
| 955 | num_cpus = for_all_cpus(alloc_new_cpu_counters); | 951 | num_cpus = for_all_cpus(alloc_new_counters); |
| 956 | 952 | ||
| 957 | if (verbose) | 953 | if (verbose) |
| 958 | print_nehalem_info(); | 954 | print_nehalem_info(); |
| @@ -962,7 +958,7 @@ int fork_it(char **argv) | |||
| 962 | { | 958 | { |
| 963 | int retval; | 959 | int retval; |
| 964 | pid_t child_pid; | 960 | pid_t child_pid; |
| 965 | get_counters(pcc_even); | 961 | get_counters(cnt_even); |
| 966 | gettimeofday(&tv_even, (struct timezone *)NULL); | 962 | gettimeofday(&tv_even, (struct timezone *)NULL); |
| 967 | 963 | ||
| 968 | child_pid = fork(); | 964 | child_pid = fork(); |
| @@ -985,14 +981,14 @@ int fork_it(char **argv) | |||
| 985 | exit(1); | 981 | exit(1); |
| 986 | } | 982 | } |
| 987 | } | 983 | } |
| 988 | get_counters(pcc_odd); | 984 | get_counters(cnt_odd); |
| 989 | gettimeofday(&tv_odd, (struct timezone *)NULL); | 985 | gettimeofday(&tv_odd, (struct timezone *)NULL); |
| 990 | retval = compute_delta(pcc_odd, pcc_even, pcc_delta); | 986 | retval = compute_delta(cnt_odd, cnt_even, cnt_delta); |
| 991 | 987 | ||
| 992 | timersub(&tv_odd, &tv_even, &tv_delta); | 988 | timersub(&tv_odd, &tv_even, &tv_delta); |
| 993 | compute_average(pcc_delta, pcc_average); | 989 | compute_average(cnt_delta, cnt_average); |
| 994 | if (!retval) | 990 | if (!retval) |
| 995 | print_counters(pcc_delta); | 991 | print_counters(cnt_delta); |
| 996 | 992 | ||
| 997 | fprintf(stderr, "%.6f sec\n", tv_delta.tv_sec + tv_delta.tv_usec/1000000.0);; | 993 | fprintf(stderr, "%.6f sec\n", tv_delta.tv_sec + tv_delta.tv_usec/1000000.0);; |
| 998 | 994 | ||
