• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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