diff options
author | Paul Mackerras <paulus@samba.org> | 2009-06-19 08:21:42 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-06-19 12:25:47 -0400 |
commit | 9cffa8d53335d891cc0ecb3824a67118b3ee4b2f (patch) | |
tree | 420e0f96198f0e78aedd006280826b8cf0839820 /tools/perf/util | |
parent | b49a9e7e72103ea91946453c19703a4dfa1994fe (diff) |
perf_counter tools: Define and use our own u64, s64 etc. definitions
On 64-bit powerpc, __u64 is defined to be unsigned long rather than
unsigned long long. This causes compiler warnings every time we
print a __u64 value with %Lx.
Rather than changing __u64, we define our own u64 to be unsigned long
long on all architectures, and similarly s64 as signed long long.
For consistency we also define u32, s32, u16, s16, u8 and s8. These
definitions are put in a new header, types.h, because these definitions
are needed in util/string.h and util/symbol.h.
The main change here is the mechanical change of __[us]{64,32,16,8}
to remove the "__". The other changes are:
* Create types.h
* Include types.h in perf.h, util/string.h and util/symbol.h
* Add types.h to the LIB_H definition in Makefile
* Added (u64) casts in process_overflow_event() and print_sym_table()
to kill two remaining warnings.
Signed-off-by: Paul Mackerras <paulus@samba.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: benh@kernel.crashing.org
LKML-Reference: <19003.33494.495844.956580@cargo.ozlabs.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util')
-rw-r--r-- | tools/perf/util/parse-events.c | 10 | ||||
-rw-r--r-- | tools/perf/util/string.c | 2 | ||||
-rw-r--r-- | tools/perf/util/string.h | 4 | ||||
-rw-r--r-- | tools/perf/util/symbol.c | 20 | ||||
-rw-r--r-- | tools/perf/util/symbol.h | 15 |
5 files changed, 26 insertions, 25 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index f0c9f2627fe1..35d04da38d6a 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
@@ -13,8 +13,8 @@ int nr_counters; | |||
13 | struct perf_counter_attr attrs[MAX_COUNTERS]; | 13 | struct perf_counter_attr attrs[MAX_COUNTERS]; |
14 | 14 | ||
15 | struct event_symbol { | 15 | struct event_symbol { |
16 | __u8 type; | 16 | u8 type; |
17 | __u64 config; | 17 | u64 config; |
18 | char *symbol; | 18 | char *symbol; |
19 | }; | 19 | }; |
20 | 20 | ||
@@ -96,7 +96,7 @@ static char *hw_cache_result [][MAX_ALIASES] = { | |||
96 | 96 | ||
97 | char *event_name(int counter) | 97 | char *event_name(int counter) |
98 | { | 98 | { |
99 | __u64 config = attrs[counter].config; | 99 | u64 config = attrs[counter].config; |
100 | int type = attrs[counter].type; | 100 | int type = attrs[counter].type; |
101 | static char buf[32]; | 101 | static char buf[32]; |
102 | 102 | ||
@@ -112,7 +112,7 @@ char *event_name(int counter) | |||
112 | return "unknown-hardware"; | 112 | return "unknown-hardware"; |
113 | 113 | ||
114 | case PERF_TYPE_HW_CACHE: { | 114 | case PERF_TYPE_HW_CACHE: { |
115 | __u8 cache_type, cache_op, cache_result; | 115 | u8 cache_type, cache_op, cache_result; |
116 | static char name[100]; | 116 | static char name[100]; |
117 | 117 | ||
118 | cache_type = (config >> 0) & 0xff; | 118 | cache_type = (config >> 0) & 0xff; |
@@ -202,7 +202,7 @@ static int parse_generic_hw_symbols(const char *str, struct perf_counter_attr *a | |||
202 | */ | 202 | */ |
203 | static int parse_event_symbols(const char *str, struct perf_counter_attr *attr) | 203 | static int parse_event_symbols(const char *str, struct perf_counter_attr *attr) |
204 | { | 204 | { |
205 | __u64 config, id; | 205 | u64 config, id; |
206 | int type; | 206 | int type; |
207 | unsigned int i; | 207 | unsigned int i; |
208 | const char *sep, *pstr; | 208 | const char *sep, *pstr; |
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c index ec33c0c7f4e2..c93eca9a7be3 100644 --- a/tools/perf/util/string.c +++ b/tools/perf/util/string.c | |||
@@ -15,7 +15,7 @@ static int hex(char ch) | |||
15 | * While we find nice hex chars, build a long_val. | 15 | * While we find nice hex chars, build a long_val. |
16 | * Return number of chars processed. | 16 | * Return number of chars processed. |
17 | */ | 17 | */ |
18 | int hex2u64(const char *ptr, __u64 *long_val) | 18 | int hex2u64(const char *ptr, u64 *long_val) |
19 | { | 19 | { |
20 | const char *p = ptr; | 20 | const char *p = ptr; |
21 | *long_val = 0; | 21 | *long_val = 0; |
diff --git a/tools/perf/util/string.h b/tools/perf/util/string.h index 72812c1c9a7a..37b03255b425 100644 --- a/tools/perf/util/string.h +++ b/tools/perf/util/string.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef _PERF_STRING_H_ | 1 | #ifndef _PERF_STRING_H_ |
2 | #define _PERF_STRING_H_ | 2 | #define _PERF_STRING_H_ |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include "../types.h" |
5 | 5 | ||
6 | int hex2u64(const char *ptr, __u64 *val); | 6 | int hex2u64(const char *ptr, u64 *val); |
7 | 7 | ||
8 | #endif | 8 | #endif |
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 49a55f813712..86e14375e74e 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c | |||
@@ -9,9 +9,9 @@ | |||
9 | 9 | ||
10 | const char *sym_hist_filter; | 10 | const char *sym_hist_filter; |
11 | 11 | ||
12 | static struct symbol *symbol__new(__u64 start, __u64 len, | 12 | static struct symbol *symbol__new(u64 start, u64 len, |
13 | const char *name, unsigned int priv_size, | 13 | const char *name, unsigned int priv_size, |
14 | __u64 obj_start, int verbose) | 14 | u64 obj_start, int verbose) |
15 | { | 15 | { |
16 | size_t namelen = strlen(name) + 1; | 16 | size_t namelen = strlen(name) + 1; |
17 | struct symbol *self = calloc(1, priv_size + sizeof(*self) + namelen); | 17 | struct symbol *self = calloc(1, priv_size + sizeof(*self) + namelen); |
@@ -21,14 +21,14 @@ static struct symbol *symbol__new(__u64 start, __u64 len, | |||
21 | 21 | ||
22 | if (verbose >= 2) | 22 | if (verbose >= 2) |
23 | printf("new symbol: %016Lx [%08lx]: %s, hist: %p, obj_start: %p\n", | 23 | printf("new symbol: %016Lx [%08lx]: %s, hist: %p, obj_start: %p\n", |
24 | (__u64)start, (unsigned long)len, name, self->hist, (void *)(unsigned long)obj_start); | 24 | (u64)start, (unsigned long)len, name, self->hist, (void *)(unsigned long)obj_start); |
25 | 25 | ||
26 | self->obj_start= obj_start; | 26 | self->obj_start= obj_start; |
27 | self->hist = NULL; | 27 | self->hist = NULL; |
28 | self->hist_sum = 0; | 28 | self->hist_sum = 0; |
29 | 29 | ||
30 | if (sym_hist_filter && !strcmp(name, sym_hist_filter)) | 30 | if (sym_hist_filter && !strcmp(name, sym_hist_filter)) |
31 | self->hist = calloc(sizeof(__u64), len); | 31 | self->hist = calloc(sizeof(u64), len); |
32 | 32 | ||
33 | if (priv_size) { | 33 | if (priv_size) { |
34 | memset(self, 0, priv_size); | 34 | memset(self, 0, priv_size); |
@@ -89,7 +89,7 @@ static void dso__insert_symbol(struct dso *self, struct symbol *sym) | |||
89 | { | 89 | { |
90 | struct rb_node **p = &self->syms.rb_node; | 90 | struct rb_node **p = &self->syms.rb_node; |
91 | struct rb_node *parent = NULL; | 91 | struct rb_node *parent = NULL; |
92 | const __u64 ip = sym->start; | 92 | const u64 ip = sym->start; |
93 | struct symbol *s; | 93 | struct symbol *s; |
94 | 94 | ||
95 | while (*p != NULL) { | 95 | while (*p != NULL) { |
@@ -104,7 +104,7 @@ static void dso__insert_symbol(struct dso *self, struct symbol *sym) | |||
104 | rb_insert_color(&sym->rb_node, &self->syms); | 104 | rb_insert_color(&sym->rb_node, &self->syms); |
105 | } | 105 | } |
106 | 106 | ||
107 | struct symbol *dso__find_symbol(struct dso *self, __u64 ip) | 107 | struct symbol *dso__find_symbol(struct dso *self, u64 ip) |
108 | { | 108 | { |
109 | struct rb_node *n; | 109 | struct rb_node *n; |
110 | 110 | ||
@@ -151,7 +151,7 @@ static int dso__load_kallsyms(struct dso *self, symbol_filter_t filter, int verb | |||
151 | goto out_failure; | 151 | goto out_failure; |
152 | 152 | ||
153 | while (!feof(file)) { | 153 | while (!feof(file)) { |
154 | __u64 start; | 154 | u64 start; |
155 | struct symbol *sym; | 155 | struct symbol *sym; |
156 | int line_len, len; | 156 | int line_len, len; |
157 | char symbol_type; | 157 | char symbol_type; |
@@ -232,7 +232,7 @@ static int dso__load_perf_map(struct dso *self, symbol_filter_t filter, int verb | |||
232 | goto out_failure; | 232 | goto out_failure; |
233 | 233 | ||
234 | while (!feof(file)) { | 234 | while (!feof(file)) { |
235 | __u64 start, size; | 235 | u64 start, size; |
236 | struct symbol *sym; | 236 | struct symbol *sym; |
237 | int line_len, len; | 237 | int line_len, len; |
238 | 238 | ||
@@ -353,7 +353,7 @@ static int dso__synthesize_plt_symbols(struct dso *self, Elf *elf, | |||
353 | { | 353 | { |
354 | uint32_t nr_rel_entries, idx; | 354 | uint32_t nr_rel_entries, idx; |
355 | GElf_Sym sym; | 355 | GElf_Sym sym; |
356 | __u64 plt_offset; | 356 | u64 plt_offset; |
357 | GElf_Shdr shdr_plt; | 357 | GElf_Shdr shdr_plt; |
358 | struct symbol *f; | 358 | struct symbol *f; |
359 | GElf_Shdr shdr_rel_plt; | 359 | GElf_Shdr shdr_rel_plt; |
@@ -523,7 +523,7 @@ static int dso__load_sym(struct dso *self, int fd, const char *name, | |||
523 | 523 | ||
524 | elf_symtab__for_each_symbol(syms, nr_syms, index, sym) { | 524 | elf_symtab__for_each_symbol(syms, nr_syms, index, sym) { |
525 | struct symbol *f; | 525 | struct symbol *f; |
526 | __u64 obj_start; | 526 | u64 obj_start; |
527 | 527 | ||
528 | if (!elf_sym__is_function(&sym)) | 528 | if (!elf_sym__is_function(&sym)) |
529 | continue; | 529 | continue; |
diff --git a/tools/perf/util/symbol.h b/tools/perf/util/symbol.h index 5ad9b06c3f6f..ea332e56e458 100644 --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h | |||
@@ -2,16 +2,17 @@ | |||
2 | #define _PERF_SYMBOL_ 1 | 2 | #define _PERF_SYMBOL_ 1 |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include "../types.h" | ||
5 | #include "list.h" | 6 | #include "list.h" |
6 | #include "rbtree.h" | 7 | #include "rbtree.h" |
7 | 8 | ||
8 | struct symbol { | 9 | struct symbol { |
9 | struct rb_node rb_node; | 10 | struct rb_node rb_node; |
10 | __u64 start; | 11 | u64 start; |
11 | __u64 end; | 12 | u64 end; |
12 | __u64 obj_start; | 13 | u64 obj_start; |
13 | __u64 hist_sum; | 14 | u64 hist_sum; |
14 | __u64 *hist; | 15 | u64 *hist; |
15 | void *priv; | 16 | void *priv; |
16 | char name[0]; | 17 | char name[0]; |
17 | }; | 18 | }; |
@@ -20,7 +21,7 @@ struct dso { | |||
20 | struct list_head node; | 21 | struct list_head node; |
21 | struct rb_root syms; | 22 | struct rb_root syms; |
22 | unsigned int sym_priv_size; | 23 | unsigned int sym_priv_size; |
23 | struct symbol *(*find_symbol)(struct dso *, __u64 ip); | 24 | struct symbol *(*find_symbol)(struct dso *, u64 ip); |
24 | char name[0]; | 25 | char name[0]; |
25 | }; | 26 | }; |
26 | 27 | ||
@@ -36,7 +37,7 @@ static inline void *dso__sym_priv(struct dso *self, struct symbol *sym) | |||
36 | return ((void *)sym) - self->sym_priv_size; | 37 | return ((void *)sym) - self->sym_priv_size; |
37 | } | 38 | } |
38 | 39 | ||
39 | struct symbol *dso__find_symbol(struct dso *self, __u64 ip); | 40 | struct symbol *dso__find_symbol(struct dso *self, u64 ip); |
40 | 41 | ||
41 | int dso__load_kernel(struct dso *self, const char *vmlinux, | 42 | int dso__load_kernel(struct dso *self, const char *vmlinux, |
42 | symbol_filter_t filter, int verbose); | 43 | symbol_filter_t filter, int verbose); |