• F
    perf: Fix warning while reading ring buffer headers · d00a47cc
    Frederic Weisbecker 提交于
    commit e9e94e3b
    "perf trace: Ignore "overwrite" field if present in
    /events/header_page" makes perf trace launching spurious warnings
    about unexpected tokens read:
    
    	Warning: Error: expected type 6 but read 4
    
    This change tries to handle the overcommit field in the header_page
    file whenever this field is present or not.
    
    The problem is that if this field is not present, we try to find it
    and give up in the middle of the line when we realize we are actually
    dealing with another field, which is the "data" one. And this failure
    abandons the file pointer in the middle of the "data" description
    line:
    
    	field: u64 timestamp;	offset:0;	size:8;	signed:0;
    	field: local_t commit;	offset:8;	size:8;	signed:1;
    	field: char data;	offset:16;	size:4080;	signed:1;
                          ^^^
                          Here
    
    What happens next is that we want to read this line to parse the data
    field, but we fail because the pointer is not in the beginning of the
    line.
    
    We could probably fix that by rewinding the pointer. But in fact we
    don't care much about these headers that only concern the ftrace
    ring-buffer. We don't use them from perf.
    
    Just skip this part of perf.data, but don't remove it from recording
    to stay compatible with olders perf.data
    Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    d00a47cc
trace-event-parse.c 63.6 KB