PerformanceImpl.h revision df4af4b66b5f26c3c06ae1592ec2e67afd82dd0c
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/* $Id$ */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/** @file
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync *
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * VBox Performance COM Classes declaration.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/*
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Copyright (C) 2008 Sun Microsystems, Inc.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync *
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * available from http://www.virtualbox.org. This file is free software;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * you can redistribute it and/or modify it under the terms of the GNU
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * General Public License (GPL) as published by the Free Software
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync *
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync * additional information or have any questions.
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#ifndef ____H_PERFORMANCEIMPL
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#define ____H_PERFORMANCEIMPL
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include "VirtualBoxBase.h"
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include <VBox/com/com.h>
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include <VBox/com/array.h>
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync//#ifdef VBOX_WITH_RESOURCE_USAGE_API
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include <iprt/timer.h>
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync//#endif /* VBOX_WITH_RESOURCE_USAGE_API */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include <list>
1f277e5b999f572b1ef1fe4ef593c603ea463be3vboxsync//#include <set>
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#include "Performance.h"
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync/* Each second we obtain new CPU load stats. */
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#define VBOX_USAGE_SAMPLER_MIN_INTERVAL 1000
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncclass Machine;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncclass HostUSBDevice;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncclass ATL_NO_VTABLE PerformanceMetric :
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxBaseNEXT,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportTranslation <PerformanceMetric>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public IPerformanceMetric
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync{
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncpublic:
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_NOT_AGGREGATABLE (PerformanceMetric)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync BEGIN_COM_MAP (PerformanceMetric)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync COM_INTERFACE_ENTRY (IPerformanceMetric)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync END_COM_MAP()
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync NS_DECL_ISUPPORTS
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_EMPTY_CTOR_DTOR (PerformanceMetric)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync HRESULT FinalConstruct();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void FinalRelease();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializer/uninitializer for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync HRESULT init (pm::Metric *aMetric);
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT init (pm::BaseMetric *aMetric);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void uninit();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceMetric properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricName)) (BSTR *aMetricName);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Object)) (IUnknown **anObject);
83c86878d483df62ca8db465c671995984838338vboxsync STDMETHOD(COMGETTER(Description)) (BSTR *aDescription);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(Period)) (ULONG *aPeriod);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(Count)) (ULONG *aCount);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(Unit)) (BSTR *aUnit);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(MinimumValue)) (LONG *aMinValue);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(COMGETTER(MaximumValue)) (LONG *aMaxValue);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceMetric methods
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // (ensure there is a caller and a read lock before calling them!)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncprivate:
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync struct Data
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync {
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync /* Constructor. */
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync Data() : period(0), count(0), min(0), max(0) { }
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync Bstr name;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync ComPtr<IUnknown> object;
83c86878d483df62ca8db465c671995984838338vboxsync Bstr description;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync ULONG period;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync ULONG count;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync Bstr unit;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync LONG min;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync LONG max;
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync };
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync
5a6bbb9c0d896e804f267c6919f52158a420b998vboxsync Data m;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync};
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncclass ATL_NO_VTABLE PerformanceCollector :
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxBaseNEXT,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportErrorInfoImpl <PerformanceCollector, IPerformanceCollector>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public VirtualBoxSupportTranslation <PerformanceCollector>,
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync public IPerformanceCollector
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync{
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncpublic:
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (PerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_NOT_AGGREGATABLE (PerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync BEGIN_COM_MAP(PerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync COM_INTERFACE_ENTRY(ISupportErrorInfo)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync COM_INTERFACE_ENTRY(IPerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync END_COM_MAP()
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync NS_DECL_ISUPPORTS
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync DECLARE_EMPTY_CTOR_DTOR (PerformanceCollector)
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync HRESULT FinalConstruct();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void FinalRelease();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public initializers/uninitializers only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync HRESULT init();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void uninit();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector properties
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync STDMETHOD(COMGETTER(MetricNames)) (ComSafeArrayOut (BSTR, metricNames));
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // IPerformanceCollector methods
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(GetMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayIn (IUnknown *, objects),
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync ComSafeArrayOut (IPerformanceMetric *, outMetrics));
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync STDMETHOD(SetupMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayIn (IUnknown *, objects),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ULONG aPeriod, ULONG aCount);
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(EnableMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayIn (IUnknown *, objects));
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(DisableMetrics) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayIn (IUnknown *, objects));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync STDMETHOD(SetupMetricsEx) (ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ULONG aPeriod, ULONG aCount,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync outMetrics));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync STDMETHOD(EnableMetricsEx) (ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync outMetrics));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync STDMETHOD(DisableMetricsEx) (ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync outMetrics));
30f7bd6bf198ae0489df375e5a17cb086acb30fbvboxsync STDMETHOD(QueryMetricsData) (ComSafeArrayIn (INPTR BSTR, metricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayIn (IUnknown *, objects),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayOut (BSTR, outMetricNames),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayOut (IUnknown *, outObjects),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayOut (ULONG, outDataIndices),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayOut (ULONG, outDataLengths),
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync ComSafeArrayOut (LONG, outData));
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods only for internal purposes
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void registerBaseMetric (pm::BaseMetric *baseMetric);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void registerMetric (pm::Metric *metric);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void unregisterBaseMetricsFor (const ComPtr <IUnknown> &object);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void unregisterMetricsFor (const ComPtr <IUnknown> &object);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // public methods for internal purposes only
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // (ensure there is a caller and a read lock before calling them!)
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync
1f277e5b999f572b1ef1fe4ef593c603ea463be3vboxsync pm::CollectorHAL *getHAL() { return m.hal; };
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync // for VirtualBoxSupportErrorInfoImpl
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync static const wchar_t *getComponentName() { return L"PerformanceCollector"; }
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsyncprivate:
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT toIPerformanceMetric(pm::Metric *src, IPerformanceMetric **dst);
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT toIPerformanceMetric(pm::BaseMetric *src, IPerformanceMetric **dst);
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT SetupMetricsInt(ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ULONG aPeriod, ULONG aCount, bool reportAffected,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *, outMetrics));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT EnableMetricsInt (ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync bool reportAffected,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync outMetrics));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync HRESULT DisableMetricsInt (ComSafeArrayIn (INPTR BSTR, metricNames),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayIn (IUnknown *, objects),
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync bool reportAffected,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync ComSafeArrayOut (IPerformanceMetric *,
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync outMetrics));
df4af4b66b5f26c3c06ae1592ec2e67afd82dd0cvboxsync
e6a899848410114df5f1db88a025d0843a98112cvboxsync static void staticSamplerCallback (RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick);
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync void samplerCallback();
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
f2fedb6cbb946e9dd6d418b1472373395e2ac34fvboxsync typedef std::list<pm::Metric*> MetricList;
f2fedb6cbb946e9dd6d418b1472373395e2ac34fvboxsync typedef std::list<pm::BaseMetric*> BaseMetricList;
f2fedb6cbb946e9dd6d418b1472373395e2ac34fvboxsync
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync enum
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync {
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync MAGIC = 0xABBA1972u
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync };
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync unsigned int mMagic;
6c5e2fff0e3fdfc7c3f3fb2e7b7ec8ebb2223cecvboxsync
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync struct Data
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync {
1f277e5b999f572b1ef1fe4ef593c603ea463be3vboxsync Data() : hal(0) {};
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync BaseMetricList baseMetrics;
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync MetricList metrics;
e6a899848410114df5f1db88a025d0843a98112cvboxsync RTTIMERLR sampler;
1f277e5b999f572b1ef1fe4ef593c603ea463be3vboxsync pm::CollectorHAL *hal;
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync };
f2fedb6cbb946e9dd6d418b1472373395e2ac34fvboxsync
615105a2b89b7dd89a76504e6a9b8e099704c0d9vboxsync Data m;
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync};
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync
05c28d9d4557bed6e320dfee1acca69408bc3c15vboxsync#endif //!____H_PERFORMANCEIMPL