| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef SIMPLE_PERF_RECORD_FILE_FORMAT_H_ |
| #define SIMPLE_PERF_RECORD_FILE_FORMAT_H_ |
| |
| #include "perf_event.h" |
| |
| // The file structure of perf.data: |
| // file_header |
| // id_section |
| // attr section |
| // data section |
| // feature section |
| // |
| // The feature section has the following structure: |
| // a section descriptor array, each element contains the section information of one add_feature. |
| // data section of feature 1 |
| // data section of feature 2 |
| // .... |
| |
| namespace PerfFileFormat { |
| |
| enum { |
| FEAT_RESERVED = 0, |
| FEAT_FIRST_FEATURE = 1, |
| FEAT_TRACING_DATA = 1, |
| FEAT_BUILD_ID, |
| FEAT_HOSTNAME, |
| FEAT_OSRELEASE, |
| FEAT_VERSION, |
| FEAT_ARCH, |
| FEAT_NRCPUS, |
| FEAT_CPUDESC, |
| FEAT_CPUID, |
| FEAT_TOTAL_MEM, |
| FEAT_CMDLINE, |
| FEAT_EVENT_DESC, |
| FEAT_CPU_TOPOLOGY, |
| FEAT_NUMA_TOPOLOGY, |
| FEAT_BRANCH_STACK, |
| FEAT_PMU_MAPPINGS, |
| FEAT_GROUP_DESC, |
| FEAT_LAST_FEATURE, |
| FEAT_MAX_NUM = 256, |
| }; |
| |
| struct SectionDesc { |
| uint64_t offset; |
| uint64_t size; |
| }; |
| |
| static const char* PERF_MAGIC = "PERFILE2"; |
| |
| struct FileHeader { |
| char magic[8]; |
| uint64_t header_size; |
| uint64_t attr_size; |
| SectionDesc attrs; |
| SectionDesc data; |
| SectionDesc event_types; |
| unsigned char features[FEAT_MAX_NUM / 8]; |
| }; |
| |
| struct FileAttr { |
| perf_event_attr attr; |
| SectionDesc ids; |
| }; |
| |
| } // namespace PerfFileFormat |
| |
| #endif // SIMPLE_PERF_RECORD_FILE_FORMAT_H_ |