1 /* 2 ** 3 ** Copyright 2018, The Android Open Source Project 4 ** 5 ** Licensed under the Apache License, Version 2.0 (the "License"); 6 ** you may not use this file except in compliance with the License. 7 ** You may obtain a copy of the License at 8 ** 9 ** http://www.apache.org/licenses/LICENSE-2.0 10 ** 11 ** Unless required by applicable law or agreed to in writing, software 12 ** distributed under the License is distributed on an "AS IS" BASIS, 13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 ** See the License for the specific language governing permissions and 15 ** limitations under the License. 16 */ 17 18 #ifndef SYSTEM_EXTRAS_PERFPROFD_PERFPROFD_PERF_H_ 19 #define SYSTEM_EXTRAS_PERFPROFD_PERFPROFD_PERF_H_ 20 21 #include <string> 22 #include <unordered_set> 23 24 struct Config; 25 26 namespace android { 27 namespace perfprofd { 28 29 30 31 enum PerfResult { 32 kOK, 33 kForkFailed, 34 kRecordFailed, 35 kUnsupportedEvent, 36 }; 37 38 // 39 // Invoke "perf record". Return value is PerfResult::kOK for 40 // success, or some other error code if something went wrong. 41 // 42 PerfResult InvokePerf(Config& config, 43 const std::string &perf_path, 44 const char *stack_profile_opt, 45 unsigned duration, 46 const std::string &data_file_path, 47 const std::string &perf_stderr_path); 48 49 // Prepare the internal list of supported perf counters. 50 bool FindSupportedPerfCounters(const std::string& perf_path); 51 // Get the list of supported perf counters. 52 const std::unordered_set<std::string>& GetSupportedPerfCounters(); 53 54 } // namespace perfprofd 55 } // namespace android 56 57 #endif // SYSTEM_EXTRAS_PERFPROFD_PERFPROFD_PERF_H_ 58