blob: 89bf565134cbe21d77ac40ac733b4f28a393e19d [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <src/lib/fxl/arraysize.h>
#include "garnet/bin/cpuperf_provider/categories.h"
#include "garnet/bin/cpuperf_provider/intel-events.h"
namespace cpuperf_provider {
// TODO(dje): Reorganize fixed,arch,skl(model),misc vs
// fixed/programmable+arch/model.
#define DEF_FIXED_CATEGORY(symbol, name, events...) \
const perfmon::EventId symbol##_events[] = {events};
#define DEF_ARCH_CATEGORY(symbol, name, events...) \
const perfmon::EventId symbol##_events[] = {events};
#include "intel-pm-categories.inc"
#define DEF_SKL_CATEGORY(symbol, name, events...) \
const perfmon::EventId symbol##_events[] = {events};
#include "skylake-pm-categories.inc"
#define DEF_MISC_SKL_CATEGORY(symbol, name, events...) \
const perfmon::EventId symbol##_events[] = {events};
#include "skylake-misc-categories.inc"
extern const CategorySpec kTargetCategories[] = {
// Fixed events.
#define DEF_FIXED_CATEGORY(symbol, name, events...) \
{"cpu:" name, CategoryGroup::kFixedArch, 0, arraysize(symbol##_events), \
&symbol##_events[0]},
#include "intel-pm-categories.inc"
// Architecturally specified programmable events.
#define DEF_ARCH_CATEGORY(symbol, name, events...) \
{"cpu:" name, CategoryGroup::kProgrammableArch, 0, arraysize(symbol##_events), \
&symbol##_events[0]},
#include "intel-pm-categories.inc"
// Model-specific misc events
#define DEF_MISC_SKL_CATEGORY(symbol, name, events...) \
{"cpu:" name, CategoryGroup::kFixedModel, 0, arraysize(symbol##_events), \
&symbol##_events[0]},
#include "skylake-misc-categories.inc"
// Model-specific programmable events.
#define DEF_SKL_CATEGORY(symbol, name, events...) \
{"cpu:" name, CategoryGroup::kProgrammableModel, 0, \
arraysize(symbol##_events), &symbol##_events[0]},
#include "skylake-pm-categories.inc"
}; // kTargetCategories
extern const size_t kNumTargetCategories = arraysize(kTargetCategories);
extern const TimebaseSpec kTimebaseCategories[] = {
#define DEF_TIMEBASE_CATEGORY(symbol, name, event) {"cpu:" name, event},
#include "intel-timebase-categories.inc"
};
extern const size_t kNumTimebaseCategories = arraysize(kTimebaseCategories);
} // namespace cpuperf_provider