// Copyright 2016 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_
#define CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_
#include <vector>
#include "compat/string.h"
#include "kernel/perf_event.h"
// Data structures that are used by multiple modules.
namespace quipper {
// This is becoming more like a partial struct perf_evsel
struct PerfFileAttr {
struct perf_event_attr attr;
string name;
std::vector<uint64_t> ids;
};
struct PerfUint32Metadata {
uint32_t type;
std::vector<uint32_t> data;
};
struct PerfUint64Metadata {
uint32_t type;
std::vector<uint64_t> data;
};
struct PerfCPUTopologyMetadata {
std::vector<string> core_siblings;
std::vector<string> thread_siblings;
};
struct PerfNodeTopologyMetadata {
uint32_t id;
uint64_t total_memory;
uint64_t free_memory;
string cpu_list;
};
struct PerfPMUMappingsMetadata {
uint32_t type;
string name;
};
struct PerfGroupDescMetadata {
string name;
uint32_t leader_idx;
uint32_t num_members;
};
} // namespace quipper
#endif // CHROMIUMOS_WIDE_PROFILING_PERF_DATA_STRUCTURES_H_