diff options
Diffstat (limited to 'tools/perf/util/trace-event-read.c')
-rw-r--r-- | tools/perf/util/trace-event-read.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/tools/perf/util/trace-event-read.c b/tools/perf/util/trace-event-read.c index b9592e0de8d7..f097e0dd6c5c 100644 --- a/tools/perf/util/trace-event-read.c +++ b/tools/perf/util/trace-event-read.c | |||
@@ -52,6 +52,16 @@ static unsigned long page_size; | |||
52 | static ssize_t calc_data_size; | 52 | static ssize_t calc_data_size; |
53 | static bool repipe; | 53 | static bool repipe; |
54 | 54 | ||
55 | static void *malloc_or_die(int size) | ||
56 | { | ||
57 | void *ret; | ||
58 | |||
59 | ret = malloc(size); | ||
60 | if (!ret) | ||
61 | die("malloc"); | ||
62 | return ret; | ||
63 | } | ||
64 | |||
55 | static int do_read(int fd, void *buf, int size) | 65 | static int do_read(int fd, void *buf, int size) |
56 | { | 66 | { |
57 | int rsize = size; | 67 | int rsize = size; |
@@ -109,7 +119,7 @@ static unsigned int read4(void) | |||
109 | unsigned int data; | 119 | unsigned int data; |
110 | 120 | ||
111 | read_or_die(&data, 4); | 121 | read_or_die(&data, 4); |
112 | return __data2host4(data); | 122 | return __data2host4(perf_pevent, data); |
113 | } | 123 | } |
114 | 124 | ||
115 | static unsigned long long read8(void) | 125 | static unsigned long long read8(void) |
@@ -117,7 +127,7 @@ static unsigned long long read8(void) | |||
117 | unsigned long long data; | 127 | unsigned long long data; |
118 | 128 | ||
119 | read_or_die(&data, 8); | 129 | read_or_die(&data, 8); |
120 | return __data2host8(data); | 130 | return __data2host8(perf_pevent, data); |
121 | } | 131 | } |
122 | 132 | ||
123 | static char *read_string(void) | 133 | static char *read_string(void) |
@@ -282,7 +292,7 @@ struct cpu_data { | |||
282 | unsigned long long offset; | 292 | unsigned long long offset; |
283 | unsigned long long size; | 293 | unsigned long long size; |
284 | unsigned long long timestamp; | 294 | unsigned long long timestamp; |
285 | struct record *next; | 295 | struct pevent_record *next; |
286 | char *page; | 296 | char *page; |
287 | int cpu; | 297 | int cpu; |
288 | int index; | 298 | int index; |
@@ -367,9 +377,9 @@ static int calc_index(void *ptr, int cpu) | |||
367 | return (unsigned long)ptr - (unsigned long)cpu_data[cpu].page; | 377 | return (unsigned long)ptr - (unsigned long)cpu_data[cpu].page; |
368 | } | 378 | } |
369 | 379 | ||
370 | struct record *trace_peek_data(int cpu) | 380 | struct pevent_record *trace_peek_data(int cpu) |
371 | { | 381 | { |
372 | struct record *data; | 382 | struct pevent_record *data; |
373 | void *page = cpu_data[cpu].page; | 383 | void *page = cpu_data[cpu].page; |
374 | int idx = cpu_data[cpu].index; | 384 | int idx = cpu_data[cpu].index; |
375 | void *ptr = page + idx; | 385 | void *ptr = page + idx; |
@@ -389,15 +399,15 @@ struct record *trace_peek_data(int cpu) | |||
389 | /* FIXME: handle header page */ | 399 | /* FIXME: handle header page */ |
390 | if (header_page_ts_size != 8) | 400 | if (header_page_ts_size != 8) |
391 | die("expected a long long type for timestamp"); | 401 | die("expected a long long type for timestamp"); |
392 | cpu_data[cpu].timestamp = data2host8(ptr); | 402 | cpu_data[cpu].timestamp = data2host8(perf_pevent, ptr); |
393 | ptr += 8; | 403 | ptr += 8; |
394 | switch (header_page_size_size) { | 404 | switch (header_page_size_size) { |
395 | case 4: | 405 | case 4: |
396 | cpu_data[cpu].page_size = data2host4(ptr); | 406 | cpu_data[cpu].page_size = data2host4(perf_pevent, ptr); |
397 | ptr += 4; | 407 | ptr += 4; |
398 | break; | 408 | break; |
399 | case 8: | 409 | case 8: |
400 | cpu_data[cpu].page_size = data2host8(ptr); | 410 | cpu_data[cpu].page_size = data2host8(perf_pevent, ptr); |
401 | ptr += 8; | 411 | ptr += 8; |
402 | break; | 412 | break; |
403 | default: | 413 | default: |
@@ -414,7 +424,7 @@ read_again: | |||
414 | return trace_peek_data(cpu); | 424 | return trace_peek_data(cpu); |
415 | } | 425 | } |
416 | 426 | ||
417 | type_len_ts = data2host4(ptr); | 427 | type_len_ts = data2host4(perf_pevent, ptr); |
418 | ptr += 4; | 428 | ptr += 4; |
419 | 429 | ||
420 | type_len = type_len4host(type_len_ts); | 430 | type_len = type_len4host(type_len_ts); |
@@ -424,14 +434,14 @@ read_again: | |||
424 | case RINGBUF_TYPE_PADDING: | 434 | case RINGBUF_TYPE_PADDING: |
425 | if (!delta) | 435 | if (!delta) |
426 | die("error, hit unexpected end of page"); | 436 | die("error, hit unexpected end of page"); |
427 | length = data2host4(ptr); | 437 | length = data2host4(perf_pevent, ptr); |
428 | ptr += 4; | 438 | ptr += 4; |
429 | length *= 4; | 439 | length *= 4; |
430 | ptr += length; | 440 | ptr += length; |
431 | goto read_again; | 441 | goto read_again; |
432 | 442 | ||
433 | case RINGBUF_TYPE_TIME_EXTEND: | 443 | case RINGBUF_TYPE_TIME_EXTEND: |
434 | extend = data2host4(ptr); | 444 | extend = data2host4(perf_pevent, ptr); |
435 | ptr += 4; | 445 | ptr += 4; |
436 | extend <<= TS_SHIFT; | 446 | extend <<= TS_SHIFT; |
437 | extend += delta; | 447 | extend += delta; |
@@ -442,7 +452,7 @@ read_again: | |||
442 | ptr += 12; | 452 | ptr += 12; |
443 | break; | 453 | break; |
444 | case 0: | 454 | case 0: |
445 | length = data2host4(ptr); | 455 | length = data2host4(perf_pevent, ptr); |
446 | ptr += 4; | 456 | ptr += 4; |
447 | die("here! length=%d", length); | 457 | die("here! length=%d", length); |
448 | break; | 458 | break; |
@@ -467,9 +477,9 @@ read_again: | |||
467 | return data; | 477 | return data; |
468 | } | 478 | } |
469 | 479 | ||
470 | struct record *trace_read_data(int cpu) | 480 | struct pevent_record *trace_read_data(int cpu) |
471 | { | 481 | { |
472 | struct record *data; | 482 | struct pevent_record *data; |
473 | 483 | ||
474 | data = trace_peek_data(cpu); | 484 | data = trace_peek_data(cpu); |
475 | cpu_data[cpu].next = NULL; | 485 | cpu_data[cpu].next = NULL; |
@@ -509,6 +519,8 @@ ssize_t trace_report(int fd, bool __repipe) | |||
509 | file_bigendian = buf[0]; | 519 | file_bigendian = buf[0]; |
510 | host_bigendian = bigendian(); | 520 | host_bigendian = bigendian(); |
511 | 521 | ||
522 | read_trace_init(file_bigendian, host_bigendian); | ||
523 | |||
512 | read_or_die(buf, 1); | 524 | read_or_die(buf, 1); |
513 | long_size = buf[0]; | 525 | long_size = buf[0]; |
514 | 526 | ||
@@ -526,11 +538,11 @@ ssize_t trace_report(int fd, bool __repipe) | |||
526 | repipe = false; | 538 | repipe = false; |
527 | 539 | ||
528 | if (show_funcs) { | 540 | if (show_funcs) { |
529 | print_funcs(); | 541 | pevent_print_funcs(perf_pevent); |
530 | return size; | 542 | return size; |
531 | } | 543 | } |
532 | if (show_printk) { | 544 | if (show_printk) { |
533 | print_printk(); | 545 | pevent_print_printk(perf_pevent); |
534 | return size; | 546 | return size; |
535 | } | 547 | } |
536 | 548 | ||