/* ** ** 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 #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(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