blob: 9758f11f4319739c53e2daff75a6a0c44ce554b8 [file] [log] [blame]
Yabin Cuied91cd92015-04-28 15:54:13 -07001/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef SIMPLE_PERF_RECORD_FILE_FORMAT_H_
18#define SIMPLE_PERF_RECORD_FILE_FORMAT_H_
19
20#include "perf_event.h"
21
22// The file structure of perf.data:
23// file_header
24// id_section
25// attr section
26// data section
27// feature section
28//
29// The feature section has the following structure:
30// a section descriptor array, each element contains the section information of one add_feature.
31// data section of feature 1
32// data section of feature 2
33// ....
34
35namespace PerfFileFormat {
36
37enum {
38 FEAT_RESERVED = 0,
39 FEAT_FIRST_FEATURE = 1,
40 FEAT_TRACING_DATA = 1,
41 FEAT_BUILD_ID,
42 FEAT_HOSTNAME,
43 FEAT_OSRELEASE,
44 FEAT_VERSION,
45 FEAT_ARCH,
46 FEAT_NRCPUS,
47 FEAT_CPUDESC,
48 FEAT_CPUID,
49 FEAT_TOTAL_MEM,
50 FEAT_CMDLINE,
51 FEAT_EVENT_DESC,
52 FEAT_CPU_TOPOLOGY,
53 FEAT_NUMA_TOPOLOGY,
54 FEAT_BRANCH_STACK,
55 FEAT_PMU_MAPPINGS,
56 FEAT_GROUP_DESC,
57 FEAT_LAST_FEATURE,
58 FEAT_MAX_NUM = 256,
59};
60
61struct SectionDesc {
62 uint64_t offset;
63 uint64_t size;
64};
65
66static const char* PERF_MAGIC = "PERFILE2";
67
68struct FileHeader {
69 char magic[8];
70 uint64_t header_size;
71 uint64_t attr_size;
72 SectionDesc attrs;
73 SectionDesc data;
74 SectionDesc event_types;
75 unsigned char features[FEAT_MAX_NUM / 8];
76};
77
78struct FileAttr {
79 perf_event_attr attr;
80 SectionDesc ids;
81};
82
83} // namespace PerfFileFormat
84
85#endif // SIMPLE_PERF_RECORD_FILE_FORMAT_H_