perf_counter tools: Add a data file header
Add a data file header so we can transfer data between record and report. LKML-Reference: <new-submission> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:

committed by
Ingo Molnar

parent
2a0a50fe9d
commit
f5970550d5
@@ -1366,11 +1366,13 @@ process_event(event_t *event, unsigned long offset, unsigned long head)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct perf_file_header file_header;
|
||||
|
||||
static int __cmd_report(void)
|
||||
{
|
||||
int ret, rc = EXIT_FAILURE;
|
||||
unsigned long offset = 0;
|
||||
unsigned long head = 0;
|
||||
unsigned long head = sizeof(file_header);
|
||||
struct stat stat;
|
||||
event_t *event;
|
||||
uint32_t size;
|
||||
@@ -1398,6 +1400,14 @@ static int __cmd_report(void)
|
||||
exit(0);
|
||||
}
|
||||
|
||||
read(input, &file_header, sizeof(file_header));
|
||||
|
||||
if (sort__has_parent &&
|
||||
!(file_header.sample_type & PERF_SAMPLE_CALLCHAIN)) {
|
||||
fprintf(stderr, "selected --sort parent, but no callchain data\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
if (load_kernel() < 0) {
|
||||
perror("failed to load kernel symbols");
|
||||
return EXIT_FAILURE;
|
||||
@@ -1469,9 +1479,13 @@ more:
|
||||
|
||||
head += size;
|
||||
|
||||
if (offset + head >= sizeof(file_header) + file_header.data_size)
|
||||
goto done;
|
||||
|
||||
if (offset + head < stat.st_size)
|
||||
goto more;
|
||||
|
||||
done:
|
||||
rc = EXIT_SUCCESS;
|
||||
close(input);
|
||||
|
||||
|
Reference in New Issue
Block a user