blob: ded2bfb92e0308eeecb69cf98b534fe2250a03d2 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
#pragma once
#include <lib/fidl/internal.h>
#include <lib/fidl/txn_header.h>
#include <lib/fidl/llcpp/array.h>
#include <lib/fidl/llcpp/coding.h>
#include <lib/fidl/llcpp/connect_service.h>
#include <lib/fidl/llcpp/service_handler_interface.h>
#include <lib/fidl/llcpp/string_view.h>
#include <lib/fidl/llcpp/sync_call.h>
#include <lib/fidl/llcpp/traits.h>
#include <lib/fidl/llcpp/transaction.h>
#include <lib/fidl/llcpp/vector_view.h>
#include <lib/fit/function.h>
#include <lib/zx/channel.h>
#include <lib/zx/vmo.h>
#include <zircon/fidl.h>
namespace llcpp {
namespace fuchsia {
namespace perfmon {
namespace cpu {
class PropertyFlags final {
public:
constexpr PropertyFlags() : value_(0u) {}
explicit constexpr PropertyFlags(uint64_t value) : value_(value) {}
const static PropertyFlags HAS_LAST_BRANCH;
const static PropertyFlags mask;
explicit constexpr inline operator uint64_t() const { return value_; }
explicit constexpr inline operator bool() const { return static_cast<bool>(value_); }
constexpr inline bool operator==(const PropertyFlags& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const PropertyFlags& other) const { return value_ != other.value_; }
constexpr inline PropertyFlags operator~() const;
constexpr inline PropertyFlags operator|(const PropertyFlags& other) const;
constexpr inline PropertyFlags operator&(const PropertyFlags& other) const;
constexpr inline PropertyFlags operator^(const PropertyFlags& other) const;
constexpr inline void operator|=(const PropertyFlags& other);
constexpr inline void operator&=(const PropertyFlags& other);
constexpr inline void operator^=(const PropertyFlags& other);
private:
uint64_t value_;
};
constexpr const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::HAS_LAST_BRANCH = ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(1u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::mask = ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(1u);
constexpr inline ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::operator~() const {
return ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(static_cast<uint64_t>(~this->value_ & mask.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::operator|(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(static_cast<uint64_t>(this->value_ | other.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::operator&(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(static_cast<uint64_t>(this->value_ & other.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::PropertyFlags PropertyFlags::operator^(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::PropertyFlags(static_cast<uint64_t>(this->value_ ^ other.value_));
}
constexpr inline void PropertyFlags::operator|=(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) {
this->value_ |= other.value_;
}
constexpr inline void PropertyFlags::operator&=(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) {
this->value_ &= other.value_;
}
constexpr inline void PropertyFlags::operator^=(
const ::llcpp::fuchsia::perfmon::cpu::PropertyFlags& other) {
this->value_ ^= other.value_;
}
struct Properties;
class EventConfigFlags final {
public:
constexpr EventConfigFlags() : value_(0u) {}
explicit constexpr EventConfigFlags(uint32_t value) : value_(value) {}
const static EventConfigFlags COLLECT_OS;
const static EventConfigFlags COLLECT_USER;
const static EventConfigFlags COLLECT_PC;
const static EventConfigFlags IS_TIMEBASE;
const static EventConfigFlags COLLECT_LAST_BRANCH;
const static EventConfigFlags mask;
explicit constexpr inline operator uint32_t() const { return value_; }
explicit constexpr inline operator bool() const { return static_cast<bool>(value_); }
constexpr inline bool operator==(const EventConfigFlags& other) const { return value_ == other.value_; }
constexpr inline bool operator!=(const EventConfigFlags& other) const { return value_ != other.value_; }
constexpr inline EventConfigFlags operator~() const;
constexpr inline EventConfigFlags operator|(const EventConfigFlags& other) const;
constexpr inline EventConfigFlags operator&(const EventConfigFlags& other) const;
constexpr inline EventConfigFlags operator^(const EventConfigFlags& other) const;
constexpr inline void operator|=(const EventConfigFlags& other);
constexpr inline void operator&=(const EventConfigFlags& other);
constexpr inline void operator^=(const EventConfigFlags& other);
private:
uint32_t value_;
};
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::COLLECT_OS = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(1u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::COLLECT_USER = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(2u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::COLLECT_PC = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(4u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::IS_TIMEBASE = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(8u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::COLLECT_LAST_BRANCH = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(16u);
constexpr const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::mask = ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(31u);
constexpr inline ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::operator~() const {
return ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(static_cast<uint32_t>(~this->value_ & mask.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::operator|(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(static_cast<uint32_t>(this->value_ | other.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::operator&(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(static_cast<uint32_t>(this->value_ & other.value_));
}
constexpr inline ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags EventConfigFlags::operator^(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) const {
return ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags(static_cast<uint32_t>(this->value_ ^ other.value_));
}
constexpr inline void EventConfigFlags::operator|=(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) {
this->value_ |= other.value_;
}
constexpr inline void EventConfigFlags::operator&=(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) {
this->value_ &= other.value_;
}
constexpr inline void EventConfigFlags::operator^=(
const ::llcpp::fuchsia::perfmon::cpu::EventConfigFlags& other) {
this->value_ ^= other.value_;
}
struct EventConfig;
struct Config;
struct Controller_Start_Response;
struct Controller_Start_Result;
struct Controller_StageConfig_Response;
struct Controller_StageConfig_Result;
struct Controller_Initialize_Response;
struct Controller_Initialize_Result;
struct Allocation;
class Controller;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_Start_ResultTable;
struct Controller_Start_Result {
Controller_Start_Result() : ordinal_(Ordinal::Invalid), envelope_{} {}
enum class Tag : fidl_xunion_tag_t {
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_response() const { return ordinal() == Ordinal::kResponse; }
static Controller_Start_Result WithResponse(::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response* val) {
Controller_Start_Result result;
result.set_response(val);
return result;
}
void set_response(::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response* elem) {
ordinal_ = Ordinal::kResponse;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response& mutable_response() {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response*>(envelope_.data);
}
const ::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response& response() const {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response*>(envelope_.data);
}
bool is_err() const { return ordinal() == Ordinal::kErr; }
static Controller_Start_Result WithErr(int32_t* val) {
Controller_Start_Result result;
result.set_err(val);
return result;
}
void set_err(int32_t* elem) {
ordinal_ = Ordinal::kErr;
envelope_.data = static_cast<void*>(elem);
}
int32_t& mutable_err() {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
const int32_t& err() const {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
Tag which() const {
ZX_ASSERT(!has_invalid_tag());
return static_cast<Tag>(ordinal());
}
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_Start_ResultTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
Ordinal ordinal() const {
return ordinal_;
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
fidl_envelope_t envelope_;
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_StageConfig_ResultTable;
struct Controller_StageConfig_Result {
Controller_StageConfig_Result() : ordinal_(Ordinal::Invalid), envelope_{} {}
enum class Tag : fidl_xunion_tag_t {
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_response() const { return ordinal() == Ordinal::kResponse; }
static Controller_StageConfig_Result WithResponse(::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response* val) {
Controller_StageConfig_Result result;
result.set_response(val);
return result;
}
void set_response(::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response* elem) {
ordinal_ = Ordinal::kResponse;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response& mutable_response() {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response*>(envelope_.data);
}
const ::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response& response() const {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response*>(envelope_.data);
}
bool is_err() const { return ordinal() == Ordinal::kErr; }
static Controller_StageConfig_Result WithErr(int32_t* val) {
Controller_StageConfig_Result result;
result.set_err(val);
return result;
}
void set_err(int32_t* elem) {
ordinal_ = Ordinal::kErr;
envelope_.data = static_cast<void*>(elem);
}
int32_t& mutable_err() {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
const int32_t& err() const {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
Tag which() const {
ZX_ASSERT(!has_invalid_tag());
return static_cast<Tag>(ordinal());
}
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_StageConfig_ResultTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
Ordinal ordinal() const {
return ordinal_;
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
fidl_envelope_t envelope_;
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_Initialize_ResultTable;
struct Controller_Initialize_Result {
Controller_Initialize_Result() : ordinal_(Ordinal::Invalid), envelope_{} {}
enum class Tag : fidl_xunion_tag_t {
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
bool has_invalid_tag() const { return ordinal_ == Ordinal::Invalid; }
bool is_response() const { return ordinal() == Ordinal::kResponse; }
static Controller_Initialize_Result WithResponse(::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response* val) {
Controller_Initialize_Result result;
result.set_response(val);
return result;
}
void set_response(::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response* elem) {
ordinal_ = Ordinal::kResponse;
envelope_.data = static_cast<void*>(elem);
}
::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response& mutable_response() {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response*>(envelope_.data);
}
const ::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response& response() const {
ZX_ASSERT(ordinal() == Ordinal::kResponse);
return *static_cast<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response*>(envelope_.data);
}
bool is_err() const { return ordinal() == Ordinal::kErr; }
static Controller_Initialize_Result WithErr(int32_t* val) {
Controller_Initialize_Result result;
result.set_err(val);
return result;
}
void set_err(int32_t* elem) {
ordinal_ = Ordinal::kErr;
envelope_.data = static_cast<void*>(elem);
}
int32_t& mutable_err() {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
const int32_t& err() const {
ZX_ASSERT(ordinal() == Ordinal::kErr);
return *static_cast<int32_t*>(envelope_.data);
}
Tag which() const {
ZX_ASSERT(!has_invalid_tag());
return static_cast<Tag>(ordinal());
}
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_Initialize_ResultTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasPointer = true;
private:
enum class Ordinal : fidl_xunion_tag_t {
Invalid = 0,
kResponse = 1, // 0x1
kErr = 2, // 0x2
};
Ordinal ordinal() const {
return ordinal_;
}
static void SizeAndOffsetAssertionHelper();
Ordinal ordinal_;
FIDL_ALIGNDECL
fidl_envelope_t envelope_;
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_PropertiesTable;
// The properties of this system.
struct Properties {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_PropertiesTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 32;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// S/W API version = `API_VERSION`.
uint16_t api_version = {};
// The H/W Performance Monitor version.
// This is the version defined by the architecture.
uint16_t pm_version = {};
// The maximum number of events that can be simultaneously supported.
// The combination of events that can be simultaneously supported is
// architecture/model specific.
uint16_t max_num_events = {};
// The maximum number of fixed events that can be simultaneously
// supported, and their maximum width.
// These values are for informational/display purposes.
uint16_t max_num_fixed_events = {};
uint16_t max_fixed_counter_width = {};
// The maximum number of programmable events that can be simultaneously
// supported, and their maximum width.
// These values are for informational/display purposes.
uint16_t max_num_programmable_events = {};
uint16_t max_programmable_counter_width = {};
// The maximum number of misc events that can be simultaneously
// supported, and their maximum width.
// These values are for informational/display purposes.
uint16_t max_num_misc_events = {};
uint16_t max_misc_counter_width = {};
// Various flags.
::llcpp::fuchsia::perfmon::cpu::PropertyFlags flags = {};
};
// The maximum number of events we support simultaneously.
// Typically the h/w supports less than this, e.g., 7 or so.
constexpr uint16_t MAX_NUM_EVENTS = 32u;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_EventConfigTable;
struct EventConfig {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_EventConfigTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 12;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// Event to collect data for.
// The values are architecture specific ids.
// Each event may appear at most once.
uint16_t event = {};
// Sampling rate.
// - If rate is non-zero then when the event gets this many hits data is
// collected (e.g., pc, time).
// The rate can be non-zero for counting based events only.
// - If rate is zero then:
// If there is a timebase event then data for this event is collected
// when data for the timebase event is collected.
// Otherwise data for the event is collected once, when tracing stops.
uint32_t rate = {};
// Flags for the event.
::llcpp::fuchsia::perfmon::cpu::EventConfigFlags flags = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ConfigTable;
// Passed to `StageConfig()` to select the data to be collected.
struct Config {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ConfigTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 384;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// Events to collect data for.
::fidl::Array<::llcpp::fuchsia::perfmon::cpu::EventConfig, 32> events = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_Start_ResponseTable;
struct Controller_Start_Response {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_Start_ResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 1;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
uint8_t __reserved = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_StageConfig_ResponseTable;
struct Controller_StageConfig_Response {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_StageConfig_ResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 1;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
uint8_t __reserved = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_Controller_Initialize_ResponseTable;
struct Controller_Initialize_Response {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_Controller_Initialize_ResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 1;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
uint8_t __reserved = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_AllocationTable;
// The allocation configuration for a data collection run.
// This is generally the first call to allocate resources for a trace,
// "trace" is used generically here: == "data collection run".
struct Allocation {
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_AllocationTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 8;
[[maybe_unused]]
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasPointer = false;
// The number of buffers to allocate for trace data.
// This must be #cpus for now.
uint32_t num_buffers = {};
// The size of each buffer in 4K pages.
// Each cpu gets same buffer size.
uint32_t buffer_size_in_pages = {};
};
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetPropertiesRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetPropertiesResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerInitializeRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerInitializeResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerTerminateRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerTerminateResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetAllocationRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetAllocationResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStageConfigRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStageConfigResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetConfigRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetConfigResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetBufferHandleRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerGetBufferHandleResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStartRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStartResponseTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStopRequestTable;
extern "C" const fidl_type_t v1_fuchsia_perfmon_cpu_ControllerStopResponseTable;
class Controller final {
Controller() = delete;
public:
struct GetPropertiesResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Properties properties;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerGetPropertiesResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 48;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetPropertiesRequest = ::fidl::AnyZeroArgMessage;
struct InitializeResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Result result;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerInitializeResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct InitializeRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Allocation allocation;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerInitializeRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = InitializeResponse;
};
using TerminateResponse = ::fidl::AnyZeroArgMessage;
using TerminateRequest = ::fidl::AnyZeroArgMessage;
struct GetAllocationResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Allocation* allocation;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerGetAllocationResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetAllocationRequest = ::fidl::AnyZeroArgMessage;
struct StageConfigResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Result result;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerStageConfigResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct StageConfigRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Config config;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerStageConfigRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 400;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 400;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = StageConfigResponse;
};
struct GetConfigResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Config* config;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerGetConfigResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 384;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using GetConfigRequest = ::fidl::AnyZeroArgMessage;
struct GetBufferHandleResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::zx::vmo vmo;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerGetBufferHandleResponseTable;
static constexpr uint32_t MaxNumHandles = 1;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
struct GetBufferHandleRequest final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
uint32_t descriptor;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerGetBufferHandleRequestTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 24;
static constexpr uint32_t MaxOutOfLine = 0;
static constexpr uint32_t AltPrimarySize = 24;
static constexpr uint32_t AltMaxOutOfLine = 0;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = false;
static constexpr bool ContainsUnion = false;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kRequest;
using ResponseType = GetBufferHandleResponse;
};
struct StartResponse final {
FIDL_ALIGNDECL
fidl_message_header_t _hdr;
::llcpp::fuchsia::perfmon::cpu::Controller_Start_Result result;
static constexpr const fidl_type_t* Type = &v1_fuchsia_perfmon_cpu_ControllerStartResponseTable;
static constexpr uint32_t MaxNumHandles = 0;
static constexpr uint32_t PrimarySize = 40;
static constexpr uint32_t MaxOutOfLine = 8;
static constexpr bool HasFlexibleEnvelope = false;
static constexpr bool HasPointer = true;
static constexpr bool ContainsUnion = true;
static constexpr ::fidl::internal::TransactionalMessageKind MessageKind =
::fidl::internal::TransactionalMessageKind::kResponse;
};
using StartRequest = ::fidl::AnyZeroArgMessage;
using StopResponse = ::fidl::AnyZeroArgMessage;
using StopRequest = ::fidl::AnyZeroArgMessage;
// Collection of return types of FIDL calls in this interface.
class ResultOf final {
ResultOf() = delete;
private:
template <typename ResponseType>
class GetProperties_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetProperties_Impl(::zx::unowned_channel _client_end);
~GetProperties_Impl() = default;
GetProperties_Impl(GetProperties_Impl&& other) = default;
GetProperties_Impl& operator=(GetProperties_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Initialize_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Initialize_Impl(::zx::unowned_channel _client_end, ::llcpp::fuchsia::perfmon::cpu::Allocation allocation);
~Initialize_Impl() = default;
Initialize_Impl(Initialize_Impl&& other) = default;
Initialize_Impl& operator=(Initialize_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Terminate_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Terminate_Impl(::zx::unowned_channel _client_end);
~Terminate_Impl() = default;
Terminate_Impl(Terminate_Impl&& other) = default;
Terminate_Impl& operator=(Terminate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAllocation_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetAllocation_Impl(::zx::unowned_channel _client_end);
~GetAllocation_Impl() = default;
GetAllocation_Impl(GetAllocation_Impl&& other) = default;
GetAllocation_Impl& operator=(GetAllocation_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class StageConfig_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
StageConfig_Impl(::zx::unowned_channel _client_end, ::llcpp::fuchsia::perfmon::cpu::Config config);
~StageConfig_Impl() = default;
StageConfig_Impl(StageConfig_Impl&& other) = default;
StageConfig_Impl& operator=(StageConfig_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetConfig_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetConfig_Impl(::zx::unowned_channel _client_end);
~GetConfig_Impl() = default;
GetConfig_Impl(GetConfig_Impl&& other) = default;
GetConfig_Impl& operator=(GetConfig_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetBufferHandle_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
GetBufferHandle_Impl(::zx::unowned_channel _client_end, uint32_t descriptor);
~GetBufferHandle_Impl() = default;
GetBufferHandle_Impl(GetBufferHandle_Impl&& other) = default;
GetBufferHandle_Impl& operator=(GetBufferHandle_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Start_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Start_Impl(::zx::unowned_channel _client_end);
~Start_Impl() = default;
Start_Impl(Start_Impl&& other) = default;
Start_Impl& operator=(Start_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Stop_Impl final : private ::fidl::internal::OwnedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::OwnedSyncCallBase<ResponseType>;
public:
Stop_Impl(::zx::unowned_channel _client_end);
~Stop_Impl() = default;
Stop_Impl(Stop_Impl&& other) = default;
Stop_Impl& operator=(Stop_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using GetProperties = GetProperties_Impl<GetPropertiesResponse>;
using Initialize = Initialize_Impl<InitializeResponse>;
using Terminate = Terminate_Impl<TerminateResponse>;
using GetAllocation = GetAllocation_Impl<GetAllocationResponse>;
using StageConfig = StageConfig_Impl<StageConfigResponse>;
using GetConfig = GetConfig_Impl<GetConfigResponse>;
using GetBufferHandle = GetBufferHandle_Impl<GetBufferHandleResponse>;
using Start = Start_Impl<StartResponse>;
using Stop = Stop_Impl<StopResponse>;
};
// Collection of return types of FIDL calls in this interface,
// when the caller-allocate flavor or in-place call is used.
class UnownedResultOf final {
UnownedResultOf() = delete;
private:
template <typename ResponseType>
class GetProperties_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetProperties_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetProperties_Impl() = default;
GetProperties_Impl(GetProperties_Impl&& other) = default;
GetProperties_Impl& operator=(GetProperties_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Initialize_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Initialize_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Allocation allocation, ::fidl::BytePart _response_buffer);
~Initialize_Impl() = default;
Initialize_Impl(Initialize_Impl&& other) = default;
Initialize_Impl& operator=(Initialize_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Terminate_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Terminate_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Terminate_Impl() = default;
Terminate_Impl(Terminate_Impl&& other) = default;
Terminate_Impl& operator=(Terminate_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetAllocation_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetAllocation_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetAllocation_Impl() = default;
GetAllocation_Impl(GetAllocation_Impl&& other) = default;
GetAllocation_Impl& operator=(GetAllocation_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class StageConfig_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
StageConfig_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Config config, ::fidl::BytePart _response_buffer);
~StageConfig_Impl() = default;
StageConfig_Impl(StageConfig_Impl&& other) = default;
StageConfig_Impl& operator=(StageConfig_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetConfig_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetConfig_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~GetConfig_Impl() = default;
GetConfig_Impl(GetConfig_Impl&& other) = default;
GetConfig_Impl& operator=(GetConfig_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class GetBufferHandle_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
GetBufferHandle_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t descriptor, ::fidl::BytePart _response_buffer);
~GetBufferHandle_Impl() = default;
GetBufferHandle_Impl(GetBufferHandle_Impl&& other) = default;
GetBufferHandle_Impl& operator=(GetBufferHandle_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Start_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Start_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Start_Impl() = default;
Start_Impl(Start_Impl&& other) = default;
Start_Impl& operator=(Start_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
template <typename ResponseType>
class Stop_Impl final : private ::fidl::internal::UnownedSyncCallBase<ResponseType> {
using Super = ::fidl::internal::UnownedSyncCallBase<ResponseType>;
public:
Stop_Impl(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
~Stop_Impl() = default;
Stop_Impl(Stop_Impl&& other) = default;
Stop_Impl& operator=(Stop_Impl&& other) = default;
using Super::status;
using Super::error;
using Super::ok;
using Super::Unwrap;
using Super::value;
using Super::operator->;
using Super::operator*;
};
public:
using GetProperties = GetProperties_Impl<GetPropertiesResponse>;
using Initialize = Initialize_Impl<InitializeResponse>;
using Terminate = Terminate_Impl<TerminateResponse>;
using GetAllocation = GetAllocation_Impl<GetAllocationResponse>;
using StageConfig = StageConfig_Impl<StageConfigResponse>;
using GetConfig = GetConfig_Impl<GetConfigResponse>;
using GetBufferHandle = GetBufferHandle_Impl<GetBufferHandleResponse>;
using Start = Start_Impl<StartResponse>;
using Stop = Stop_Impl<StopResponse>;
};
class SyncClient final {
public:
explicit SyncClient(::zx::channel channel) : channel_(std::move(channel)) {}
~SyncClient() = default;
SyncClient(SyncClient&&) = default;
SyncClient& operator=(SyncClient&&) = default;
const ::zx::channel& channel() const { return channel_; }
::zx::channel* mutable_channel() { return &channel_; }
// Fetch the performance monitor properties of the system.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetProperties GetProperties();
// Fetch the performance monitor properties of the system.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetProperties GetProperties(::fidl::BytePart _response_buffer);
// Create a trace, allocating the needed trace buffers and other resources.
// "other resources" is basically a catch-all for other things that will
// be needed. This does not include reserving the events, that is done
// later by `StageConfig()`.
// Allocates 72 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Initialize Initialize(::llcpp::fuchsia::perfmon::cpu::Allocation allocation);
// Create a trace, allocating the needed trace buffers and other resources.
// "other resources" is basically a catch-all for other things that will
// be needed. This does not include reserving the events, that is done
// later by `StageConfig()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Initialize Initialize(::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Allocation allocation, ::fidl::BytePart _response_buffer);
// Free all trace buffers and any other resources allocated for the trace.
// This is also done when the connection is closed.
// Tracing is first stopped if not already stopped.
// May be called multiple times.
// Allocates 32 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Terminate Terminate();
// Return the trace allocation configuration, if there is one.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetAllocation GetAllocation();
// Return the trace allocation configuration, if there is one.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetAllocation GetAllocation(::fidl::BytePart _response_buffer);
// Stage performance monitor specification for a cpu.
// Must be called with data collection off and after `Initialize()`.
// Note: This doesn't actually configure the h/w, this just stages
// the values for subsequent use by `Start()`.
// Allocates 448 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::StageConfig StageConfig(::llcpp::fuchsia::perfmon::cpu::Config config);
// Stage performance monitor specification for a cpu.
// Must be called with data collection off and after `Initialize()`.
// Note: This doesn't actually configure the h/w, this just stages
// the values for subsequent use by `Start()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::StageConfig StageConfig(::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Config config, ::fidl::BytePart _response_buffer);
// Fetch performance monitor specification for a cpu, if it exists.
// Must be called with data collection off and after `StageConfig()`.
// Allocates 424 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetConfig GetConfig();
// Fetch performance monitor specification for a cpu, if it exists.
// Must be called with data collection off and after `StageConfig()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetConfig GetConfig(::fidl::BytePart _response_buffer);
// Return a handle of a trace buffer, if it exists, and if `descriptor`
// is valid.
// `descriptor` is (0, 1, 2, ..., `num_buffers`-1)
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::GetBufferHandle GetBufferHandle(uint32_t descriptor);
// Return a handle of a trace buffer, if it exists, and if `descriptor`
// is valid.
// `descriptor` is (0, 1, 2, ..., `num_buffers`-1)
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::GetBufferHandle GetBufferHandle(::fidl::BytePart _request_buffer, uint32_t descriptor, ::fidl::BytePart _response_buffer);
// Turn on data collection.
// Must be called after `Initialize()` + `StageConfig()` and with data
// collection off.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Start Start();
// Turn on data collection.
// Must be called after `Initialize()` + `StageConfig()` and with data
// collection off.
// Caller provides the backing storage for FIDL message via request and response buffers.
UnownedResultOf::Start Start(::fidl::BytePart _response_buffer);
// Turn off data collection.
// May be called any time after `Initialize()` has been called and before
// `Terminate()`. If called at other times the call is ignored.
// May be called multiple times.
// Allocates 32 bytes of message buffer on the stack. No heap allocation necessary.
ResultOf::Stop Stop();
private:
::zx::channel channel_;
};
// Methods to make a sync FIDL call directly on an unowned channel, avoiding setting up a client.
class Call final {
Call() = delete;
public:
// Fetch the performance monitor properties of the system.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetProperties GetProperties(::zx::unowned_channel _client_end);
// Fetch the performance monitor properties of the system.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetProperties GetProperties(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Create a trace, allocating the needed trace buffers and other resources.
// "other resources" is basically a catch-all for other things that will
// be needed. This does not include reserving the events, that is done
// later by `StageConfig()`.
// Allocates 72 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Initialize Initialize(::zx::unowned_channel _client_end, ::llcpp::fuchsia::perfmon::cpu::Allocation allocation);
// Create a trace, allocating the needed trace buffers and other resources.
// "other resources" is basically a catch-all for other things that will
// be needed. This does not include reserving the events, that is done
// later by `StageConfig()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Initialize Initialize(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Allocation allocation, ::fidl::BytePart _response_buffer);
// Free all trace buffers and any other resources allocated for the trace.
// This is also done when the connection is closed.
// Tracing is first stopped if not already stopped.
// May be called multiple times.
// Allocates 32 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Terminate Terminate(::zx::unowned_channel _client_end);
// Return the trace allocation configuration, if there is one.
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetAllocation GetAllocation(::zx::unowned_channel _client_end);
// Return the trace allocation configuration, if there is one.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetAllocation GetAllocation(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Stage performance monitor specification for a cpu.
// Must be called with data collection off and after `Initialize()`.
// Note: This doesn't actually configure the h/w, this just stages
// the values for subsequent use by `Start()`.
// Allocates 448 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::StageConfig StageConfig(::zx::unowned_channel _client_end, ::llcpp::fuchsia::perfmon::cpu::Config config);
// Stage performance monitor specification for a cpu.
// Must be called with data collection off and after `Initialize()`.
// Note: This doesn't actually configure the h/w, this just stages
// the values for subsequent use by `Start()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::StageConfig StageConfig(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, ::llcpp::fuchsia::perfmon::cpu::Config config, ::fidl::BytePart _response_buffer);
// Fetch performance monitor specification for a cpu, if it exists.
// Must be called with data collection off and after `StageConfig()`.
// Allocates 424 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetConfig GetConfig(::zx::unowned_channel _client_end);
// Fetch performance monitor specification for a cpu, if it exists.
// Must be called with data collection off and after `StageConfig()`.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetConfig GetConfig(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Return a handle of a trace buffer, if it exists, and if `descriptor`
// is valid.
// `descriptor` is (0, 1, 2, ..., `num_buffers`-1)
// Allocates 48 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::GetBufferHandle GetBufferHandle(::zx::unowned_channel _client_end, uint32_t descriptor);
// Return a handle of a trace buffer, if it exists, and if `descriptor`
// is valid.
// `descriptor` is (0, 1, 2, ..., `num_buffers`-1)
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::GetBufferHandle GetBufferHandle(::zx::unowned_channel _client_end, ::fidl::BytePart _request_buffer, uint32_t descriptor, ::fidl::BytePart _response_buffer);
// Turn on data collection.
// Must be called after `Initialize()` + `StageConfig()` and with data
// collection off.
// Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Start Start(::zx::unowned_channel _client_end);
// Turn on data collection.
// Must be called after `Initialize()` + `StageConfig()` and with data
// collection off.
// Caller provides the backing storage for FIDL message via request and response buffers.
static UnownedResultOf::Start Start(::zx::unowned_channel _client_end, ::fidl::BytePart _response_buffer);
// Turn off data collection.
// May be called any time after `Initialize()` has been called and before
// `Terminate()`. If called at other times the call is ignored.
// May be called multiple times.
// Allocates 32 bytes of message buffer on the stack. No heap allocation necessary.
static ResultOf::Stop Stop(::zx::unowned_channel _client_end);
};
// Messages are encoded and decoded in-place when these methods are used.
// Additionally, requests must be already laid-out according to the FIDL wire-format.
class InPlace final {
InPlace() = delete;
public:
// Fetch the performance monitor properties of the system.
static ::fidl::DecodeResult<GetPropertiesResponse> GetProperties(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Create a trace, allocating the needed trace buffers and other resources.
// "other resources" is basically a catch-all for other things that will
// be needed. This does not include reserving the events, that is done
// later by `StageConfig()`.
static ::fidl::DecodeResult<InitializeResponse> Initialize(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<InitializeRequest> params, ::fidl::BytePart response_buffer);
// Free all trace buffers and any other resources allocated for the trace.
// This is also done when the connection is closed.
// Tracing is first stopped if not already stopped.
// May be called multiple times.
static ::fidl::DecodeResult<TerminateResponse> Terminate(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Return the trace allocation configuration, if there is one.
static ::fidl::DecodeResult<GetAllocationResponse> GetAllocation(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Stage performance monitor specification for a cpu.
// Must be called with data collection off and after `Initialize()`.
// Note: This doesn't actually configure the h/w, this just stages
// the values for subsequent use by `Start()`.
static ::fidl::DecodeResult<StageConfigResponse> StageConfig(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<StageConfigRequest> params, ::fidl::BytePart response_buffer);
// Fetch performance monitor specification for a cpu, if it exists.
// Must be called with data collection off and after `StageConfig()`.
static ::fidl::DecodeResult<GetConfigResponse> GetConfig(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Return a handle of a trace buffer, if it exists, and if `descriptor`
// is valid.
// `descriptor` is (0, 1, 2, ..., `num_buffers`-1)
static ::fidl::DecodeResult<GetBufferHandleResponse> GetBufferHandle(::zx::unowned_channel _client_end, ::fidl::DecodedMessage<GetBufferHandleRequest> params, ::fidl::BytePart response_buffer);
// Turn on data collection.
// Must be called after `Initialize()` + `StageConfig()` and with data
// collection off.
static ::fidl::DecodeResult<StartResponse> Start(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
// Turn off data collection.
// May be called any time after `Initialize()` has been called and before
// `Terminate()`. If called at other times the call is ignored.
// May be called multiple times.
static ::fidl::DecodeResult<StopResponse> Stop(::zx::unowned_channel _client_end, ::fidl::BytePart response_buffer);
};
// Pure-virtual interface to be implemented by a server.
class Interface {
public:
Interface() = default;
virtual ~Interface() = default;
using _Outer = Controller;
using _Base = ::fidl::CompleterBase;
class GetPropertiesCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Properties properties);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Properties properties);
void Reply(::fidl::DecodedMessage<GetPropertiesResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetPropertiesCompleter = ::fidl::Completer<GetPropertiesCompleterBase>;
virtual void GetProperties(GetPropertiesCompleter::Sync _completer) = 0;
class InitializeCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Result result);
void ReplySuccess();
void ReplyError(int32_t error);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Result result);
void ReplySuccess(::fidl::BytePart _buffer);
void Reply(::fidl::DecodedMessage<InitializeResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using InitializeCompleter = ::fidl::Completer<InitializeCompleterBase>;
virtual void Initialize(::llcpp::fuchsia::perfmon::cpu::Allocation allocation, InitializeCompleter::Sync _completer) = 0;
class TerminateCompleterBase : public _Base {
public:
void Reply();
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using TerminateCompleter = ::fidl::Completer<TerminateCompleterBase>;
virtual void Terminate(TerminateCompleter::Sync _completer) = 0;
class GetAllocationCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Allocation* allocation);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Allocation* allocation);
void Reply(::fidl::DecodedMessage<GetAllocationResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetAllocationCompleter = ::fidl::Completer<GetAllocationCompleterBase>;
virtual void GetAllocation(GetAllocationCompleter::Sync _completer) = 0;
class StageConfigCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Result result);
void ReplySuccess();
void ReplyError(int32_t error);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Result result);
void ReplySuccess(::fidl::BytePart _buffer);
void Reply(::fidl::DecodedMessage<StageConfigResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using StageConfigCompleter = ::fidl::Completer<StageConfigCompleterBase>;
virtual void StageConfig(::llcpp::fuchsia::perfmon::cpu::Config config, StageConfigCompleter::Sync _completer) = 0;
class GetConfigCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Config* config);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Config* config);
void Reply(::fidl::DecodedMessage<GetConfigResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetConfigCompleter = ::fidl::Completer<GetConfigCompleterBase>;
virtual void GetConfig(GetConfigCompleter::Sync _completer) = 0;
class GetBufferHandleCompleterBase : public _Base {
public:
void Reply(::zx::vmo vmo);
void Reply(::fidl::BytePart _buffer, ::zx::vmo vmo);
void Reply(::fidl::DecodedMessage<GetBufferHandleResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using GetBufferHandleCompleter = ::fidl::Completer<GetBufferHandleCompleterBase>;
virtual void GetBufferHandle(uint32_t descriptor, GetBufferHandleCompleter::Sync _completer) = 0;
class StartCompleterBase : public _Base {
public:
void Reply(::llcpp::fuchsia::perfmon::cpu::Controller_Start_Result result);
void ReplySuccess();
void ReplyError(int32_t error);
void Reply(::fidl::BytePart _buffer, ::llcpp::fuchsia::perfmon::cpu::Controller_Start_Result result);
void ReplySuccess(::fidl::BytePart _buffer);
void Reply(::fidl::DecodedMessage<StartResponse> params);
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using StartCompleter = ::fidl::Completer<StartCompleterBase>;
virtual void Start(StartCompleter::Sync _completer) = 0;
class StopCompleterBase : public _Base {
public:
void Reply();
protected:
using ::fidl::CompleterBase::CompleterBase;
};
using StopCompleter = ::fidl::Completer<StopCompleterBase>;
virtual void Stop(StopCompleter::Sync _completer) = 0;
};
// Attempts to dispatch the incoming message to a handler function in the server implementation.
// If there is no matching handler, it returns false, leaving the message and transaction intact.
// In all other cases, it consumes the message and returns true.
// It is possible to chain multiple TryDispatch functions in this manner.
static bool TryDispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Dispatches the incoming message to one of the handlers functions in the interface.
// If there is no matching handler, it closes all the handles in |msg| and closes the channel with
// a |ZX_ERR_NOT_SUPPORTED| epitaph, before returning false. The message should then be discarded.
static bool Dispatch(Interface* impl, fidl_msg_t* msg, ::fidl::Transaction* txn);
// Same as |Dispatch|, but takes a |void*| instead of |Interface*|. Only used with |fidl::Bind|
// to reduce template expansion.
// Do not call this method manually. Use |Dispatch| instead.
static bool TypeErasedDispatch(void* impl, fidl_msg_t* msg, ::fidl::Transaction* txn) {
return Dispatch(static_cast<Interface*>(impl), msg, txn);
}
// Helper functions to fill in the transaction header in a |DecodedMessage<TransactionalMessage>|.
class SetTransactionHeaderFor final {
SetTransactionHeaderFor() = delete;
public:
static void GetPropertiesRequest(const ::fidl::DecodedMessage<Controller::GetPropertiesRequest>& _msg);
static void GetPropertiesResponse(const ::fidl::DecodedMessage<Controller::GetPropertiesResponse>& _msg);
static void InitializeRequest(const ::fidl::DecodedMessage<Controller::InitializeRequest>& _msg);
static void InitializeResponse(const ::fidl::DecodedMessage<Controller::InitializeResponse>& _msg);
static void TerminateRequest(const ::fidl::DecodedMessage<Controller::TerminateRequest>& _msg);
static void TerminateResponse(const ::fidl::DecodedMessage<Controller::TerminateResponse>& _msg);
static void GetAllocationRequest(const ::fidl::DecodedMessage<Controller::GetAllocationRequest>& _msg);
static void GetAllocationResponse(const ::fidl::DecodedMessage<Controller::GetAllocationResponse>& _msg);
static void StageConfigRequest(const ::fidl::DecodedMessage<Controller::StageConfigRequest>& _msg);
static void StageConfigResponse(const ::fidl::DecodedMessage<Controller::StageConfigResponse>& _msg);
static void GetConfigRequest(const ::fidl::DecodedMessage<Controller::GetConfigRequest>& _msg);
static void GetConfigResponse(const ::fidl::DecodedMessage<Controller::GetConfigResponse>& _msg);
static void GetBufferHandleRequest(const ::fidl::DecodedMessage<Controller::GetBufferHandleRequest>& _msg);
static void GetBufferHandleResponse(const ::fidl::DecodedMessage<Controller::GetBufferHandleResponse>& _msg);
static void StartRequest(const ::fidl::DecodedMessage<Controller::StartRequest>& _msg);
static void StartResponse(const ::fidl::DecodedMessage<Controller::StartResponse>& _msg);
static void StopRequest(const ::fidl::DecodedMessage<Controller::StopRequest>& _msg);
static void StopResponse(const ::fidl::DecodedMessage<Controller::StopResponse>& _msg);
};
};
constexpr uint16_t API_VERSION = 0u;
} // namespace cpu
} // namespace perfmon
} // namespace fuchsia
} // namespace llcpp
namespace fidl {
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::PropertyFlags> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::PropertyFlags>);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::PropertyFlags) == sizeof(uint64_t));
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Properties> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Properties>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, api_version) == 0);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, pm_version) == 2);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_num_events) == 4);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_num_fixed_events) == 6);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_fixed_counter_width) == 8);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_num_programmable_events) == 10);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_programmable_counter_width) == 12);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_num_misc_events) == 14);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, max_misc_counter_width) == 16);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Properties, flags) == 24);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Properties) == ::llcpp::fuchsia::perfmon::cpu::Properties::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::EventConfigFlags> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::EventConfigFlags>);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::EventConfigFlags) == sizeof(uint32_t));
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::EventConfig> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::EventConfig>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::EventConfig, event) == 0);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::EventConfig, rate) == 4);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::EventConfig, flags) == 8);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::EventConfig) == ::llcpp::fuchsia::perfmon::cpu::EventConfig::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Config> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Config>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Config, events) == 0);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Config) == ::llcpp::fuchsia::perfmon::cpu::Config::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response, __reserved) == 0);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response) == ::llcpp::fuchsia::perfmon::cpu::Controller_Start_Response::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Result> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_Start_Result>);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response, __reserved) == 0);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response) == ::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Response::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Result> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_StageConfig_Result>);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response, __reserved) == 0);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response) == ::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Response::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Result> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Controller_Initialize_Result>);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Allocation> : public std::true_type {};
static_assert(std::is_standard_layout_v<::llcpp::fuchsia::perfmon::cpu::Allocation>);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Allocation, num_buffers) == 0);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Allocation, buffer_size_in_pages) == 4);
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Allocation) == ::llcpp::fuchsia::perfmon::cpu::Allocation::PrimarySize);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::GetPropertiesResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::GetPropertiesResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::GetPropertiesResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::GetPropertiesResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::GetPropertiesResponse, properties) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::InitializeRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::InitializeRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::InitializeRequest)
== ::llcpp::fuchsia::perfmon::cpu::Controller::InitializeRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::InitializeRequest, allocation) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::InitializeResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::InitializeResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::InitializeResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::InitializeResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::InitializeResponse, result) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::GetAllocationResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::GetAllocationResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::GetAllocationResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::GetAllocationResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::GetAllocationResponse, allocation) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigRequest)
== ::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigRequest, config) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::StageConfigResponse, result) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::GetConfigResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::GetConfigResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::GetConfigResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::GetConfigResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::GetConfigResponse, config) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleRequest> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleRequest> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleRequest)
== ::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleRequest::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleRequest, descriptor) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::GetBufferHandleResponse, vmo) == 16);
template <>
struct IsFidlType<::llcpp::fuchsia::perfmon::cpu::Controller::StartResponse> : public std::true_type {};
template <>
struct IsFidlMessage<::llcpp::fuchsia::perfmon::cpu::Controller::StartResponse> : public std::true_type {};
static_assert(sizeof(::llcpp::fuchsia::perfmon::cpu::Controller::StartResponse)
== ::llcpp::fuchsia::perfmon::cpu::Controller::StartResponse::PrimarySize);
static_assert(offsetof(::llcpp::fuchsia::perfmon::cpu::Controller::StartResponse, result) == 16);
} // namespace fidl