• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_
6 #define CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_
7 
8 #include <vector>
9 
10 #include "compat/string.h"
11 #include "kernel/perf_event.h"
12 
13 // Data structures that are used by multiple modules.
14 
15 namespace quipper {
16 
17 // This is becoming more like a partial struct perf_evsel
18 struct PerfFileAttr {
19   struct perf_event_attr attr;
20   string name;
21   std::vector<uint64_t> ids;
22 };
23 
24 struct PerfUint32Metadata {
25   uint32_t type;
26   std::vector<uint32_t> data;
27 };
28 
29 struct PerfUint64Metadata {
30   uint32_t type;
31   std::vector<uint64_t> data;
32 };
33 
34 struct PerfCPUTopologyMetadata {
35   std::vector<string> core_siblings;
36   std::vector<string> thread_siblings;
37 };
38 
39 struct PerfNodeTopologyMetadata {
40   uint32_t id;
41   uint64_t total_memory;
42   uint64_t free_memory;
43   string cpu_list;
44 };
45 
46 struct PerfPMUMappingsMetadata {
47   uint32_t type;
48   string name;
49 };
50 
51 struct PerfGroupDescMetadata {
52   string name;
53   uint32_t leader_idx;
54   uint32_t num_members;
55 };
56 
57 }  // namespace quipper
58 
59 #endif  // CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_
60