perf timechart: Fix header handling
OGAWA Hirofumi [Sun, 6 Dec 2009 11:07:29 +0000 (20:07 +0900)]
Update "struct trace_entry" to match with current one. And
remove "size" field from it.

If it has "size", it become cause of alignment mismatch of
structure with kernel.

Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Acked-by: Arjan van de Ven <arjan@infradead.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <87ljhg8ioe.fsf@devron.myhome.or.jp>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

tools/perf/builtin-timechart.c

index cb58b66..c0f29ed 100644 (file)
@@ -302,12 +302,11 @@ process_exit_event(event_t *event)
 }
 
 struct trace_entry {
-       u32                     size;
        unsigned short          type;
        unsigned char           flags;
        unsigned char           preempt_count;
        int                     pid;
-       int                     tgid;
+       int                     lock_depth;
 };
 
 struct power_entry {
@@ -489,6 +488,7 @@ process_sample_event(event_t *event)
        u64 stamp = 0;
        u32 cpu = 0;
        u32 pid = 0;
+       u32 size, *size_ptr;
        struct trace_entry *te;
 
        if (sample_type & PERF_SAMPLE_IP)
@@ -518,9 +518,13 @@ process_sample_event(event_t *event)
        if (sample_type & PERF_SAMPLE_PERIOD)
                cursor++;
 
-       te = (void *)&event->sample.array[cursor];
+       size_ptr = (void *)&event->sample.array[cursor];
 
-       if (sample_type & PERF_SAMPLE_RAW && te->size > 0) {
+       size = *size_ptr;
+       size_ptr++;
+
+       te = (void *)size_ptr;
+       if (sample_type & PERF_SAMPLE_RAW && size > 0) {
                char *event_str;
                struct power_entry *pe;