| /* |
| ** |
| ** Copyright 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 PERF_INTERNALS_H |
| #define PERF_INTERNALS_H |
| |
| #include <linux/perf_event.h> |
| #include "kernel-headers/tools/perf/util/types.h" |
| #include "kernel-headers/tools/perf/util/include/linux/bitops.h" |
| #include "kernel-headers/tools/perf/util/include/linux/types.h" |
| #include "kernel-headers/tools/perf/util/build-id.h" |
| #include "kernel-headers/tools/perf/util/include/linux/kernel/kernel.h" |
| #include "kernel-headers/tools/perf/util/header.h" |
| #include "kernel-headers/tools/perf/util/event.h" |
| #include "kernel-headers/tools/perf/util/target.h" |
| #include "kernel-headers/tools/perf/perf.h" |
| |
| // The first 64 bits of the perf header, used as a perf data file ID tag. |
| const uint64_t kPerfMagic = 0x32454c4946524550LL; // "PERFILE2" little-endian |
| |
| #undef max |
| #undef min |
| |
| // |
| // Wrapper class to manage creation/deletion of storage associated |
| // with perf_sample structs. |
| // |
| class PerfSampleCustodian { |
| public: |
| explicit PerfSampleCustodian(struct perf_sample& sample) |
| : sample_(sample) { |
| sample.raw_data = NULL; |
| sample.callchain = NULL; |
| sample.branch_stack = NULL; |
| } |
| ~PerfSampleCustodian() { |
| if (sample_.callchain) |
| delete [] sample_.callchain; |
| if (sample_.branch_stack) |
| delete [] sample_.branch_stack; |
| if (sample_.branch_stack) |
| delete [] reinterpret_cast<char*>(sample_.raw_data); |
| } |
| private: |
| struct perf_sample& sample_; |
| }; |
| |
| typedef perf_event event_t; |
| |
| // |
| // Custom / user-specific records emitted by simpleperf. |
| // These need to be kept in sync with the simpleperf sources. |
| // |
| enum simpleperf_record_type { |
| SIMPLE_PERF_RECORD_TYPE_START = 32768, |
| SIMPLE_PERF_RECORD_KERNEL_SYMBOL, |
| SIMPLE_PERF_RECORD_DSO, |
| SIMPLE_PERF_RECORD_SYMBOL, |
| SIMPLE_PERF_RECORD_SPLIT, |
| SIMPLE_PERF_RECORD_SPLIT_END, |
| }; |
| |
| #endif |