1 /* 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 35 namespace PerfFileFormat { 36 37 enum { 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 61 struct SectionDesc { 62 uint64_t offset; 63 uint64_t size; 64 }; 65 66 static const char* PERF_MAGIC = "PERFILE2"; 67 68 struct 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 78 struct FileAttr { 79 perf_event_attr attr; 80 SectionDesc ids; 81 }; 82 83 } // namespace PerfFileFormat 84 85 #endif // SIMPLE_PERF_RECORD_FILE_FORMAT_H_ 86