MachineDebuggerImpl.h revision 0ce6ae9d6efed5d54222a13bbdabce9e688e4447
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* $Id$ */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/** @file
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * VirtualBox COM class implementation
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright (C) 2006-2008 Sun Microsystems, Inc.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * available from http://www.virtualbox.org. This file is free software;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * you can redistribute it and/or modify it under the terms of the GNU
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * General Public License (GPL) as published by the Free Software
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * additional information or have any questions.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef ____H_MACHINEDEBUGGER
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define ____H_MACHINEDEBUGGER
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include "VirtualBoxBase.h"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncclass Console;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncclass ATL_NO_VTABLE MachineDebugger :
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync public VirtualBoxBaseNEXT,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync public VirtualBoxSupportErrorInfoImpl <MachineDebugger, IMachineDebugger>,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync public VirtualBoxSupportTranslation <MachineDebugger>,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VBOX_SCRIPTABLE_IMPL(IMachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncpublic:
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (MachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DECLARE_NOT_AGGREGATABLE (MachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync BEGIN_COM_MAP(MachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync COM_INTERFACE_ENTRY (ISupportErrorInfo)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync COM_INTERFACE_ENTRY (IMachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync END_COM_MAP()
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync NS_DECL_ISUPPORTS
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync DECLARE_EMPTY_CTOR_DTOR (MachineDebugger)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync HRESULT FinalConstruct();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync void FinalRelease();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // public initializer/uninitializer for internal purposes only
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync HRESULT init (Console *aParent);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync void uninit();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // IMachineDebugger properties
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(Singlestep)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(Singlestep)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(RecompileUser)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(RecompileUser)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(RecompileSupervisor)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(RecompileSupervisor)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(PATMEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(PATMEnabled)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(CSAMEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(CSAMEnabled)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(LogEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(LogEnabled)) (BOOL aEnable);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(HWVirtExEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(HWVirtExNestedPagingEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(HWVirtExVPIDEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(PAEEnabled)) (BOOL *aEnabled);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(VirtualTimeRate)) (ULONG *aPct);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMSETTER(VirtualTimeRate)) (ULONG aPct);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(COMGETTER(VM)) (ULONG64 *aVm);
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(InjectNMI)();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // IMachineDebugger methods
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(ResetStats (IN_BSTR aPattern));
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(DumpStats (IN_BSTR aPattern));
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync STDMETHOD(GetStats (IN_BSTR aPattern, BOOL aWithDescriptions, BSTR *aStats));
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // "public-private methods"
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync void flushQueuedSettings();
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // for VirtualBoxSupportErrorInfoImpl
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync static const wchar_t *getComponentName() { return L"MachineDebugger"; }
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsyncprivate:
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // private methods
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync bool queueSettings() const;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync const ComObjPtr <Console, ComWeakRef> mParent;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // flags whether settings have been queued because
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync // they could not be sent to the VM (not up yet, etc.)
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mSinglestepQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mRecompileUserQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mRecompileSupervisorQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mPatmEnabledQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mCsamEnabledQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync int mLogEnabledQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uint32_t mVirtualTimeRateQueued;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync bool mFlushMode;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync};
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif /* ____H_MACHINEDEBUGGER */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync