aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-10-13 01:06:56 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-10-13 01:09:40 -0400
commitf59f9f429f4139b9207fea9566ae1a61b7e9cadc (patch)
tree46a8c0499fe4b582d9304ab2ca1223f07d397125
parenteaba260c4f3aae66c9d76a1b949f0c2ab908e830 (diff)
fix bprintk printing
The handling of bprintk was broken in more ways than one. This fixes those issues. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--parse-events.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/parse-events.c b/parse-events.c
index b802be7..3581214 100644
--- a/parse-events.c
+++ b/parse-events.c
@@ -304,18 +304,16 @@ void parse_ftrace_printk(char *file, unsigned int size)
304 char *line; 304 char *line;
305 char *next; 305 char *next;
306 char *addr_str; 306 char *addr_str;
307 int ret; 307 char *fmt;
308 int i; 308 int i;
309 309
310 line = strtok_r(file, "\n", &next); 310 line = strtok_r(file, "\n", &next);
311 while (line) { 311 while (line) {
312 item = malloc_or_die(sizeof(*item)); 312 item = malloc_or_die(sizeof(*item));
313 ret = sscanf(line, "%as : %as", 313 addr_str = strtok_r(line, ":", &fmt);
314 &addr_str,
315 &item->printk);
316 item->addr = strtoull(addr_str, NULL, 16); 314 item->addr = strtoull(addr_str, NULL, 16);
317 free(addr_str); 315 /* fmt still has a space, skip it */
318 316 item->printk = strdup(fmt+1);
319 item->next = list; 317 item->next = list;
320 list = item; 318 list = item;
321 line = strtok_r(NULL, "\n", &next); 319 line = strtok_r(NULL, "\n", &next);
@@ -2192,8 +2190,8 @@ static struct print_arg *make_bprint_args(char *fmt, void *data, int size, struc
2192 case 'u': 2190 case 'u':
2193 case 'x': 2191 case 'x':
2194 case 'i': 2192 case 'i':
2195 bptr = (void *)(((unsigned long)bptr + (long_size - 1)) & 2193 bptr = (void *)(((unsigned long)bptr + 3) &
2196 ~(long_size - 1)); 2194 ~3);
2197 switch (ls) { 2195 switch (ls) {
2198 case 0: 2196 case 0:
2199 case 1: 2197 case 1: