VMMDevState.h revision 9bdd3a815b34951f7ad0589e401fc813bff7ad4a
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync/* $Id$ */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync/** @file
5b281ba489ca18f0380d7efc7a5108b606cce449vboxsync * VMMDev - Guest <-> VMM/Host communication device, internal header.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync/*
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Copyright (C) 2006-2007 Oracle Corporation
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync *
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * available from http://www.virtualbox.org. This file is free software;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * you can redistribute it and/or modify it under the terms of the GNU
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * General Public License (GPL) as published by the Free Software
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifndef ___VMMDev_VMMDevState_h
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#define ___VMMDev_VMMDevState_h
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#include <VBox/VMMDev.h>
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#include <VBox/pdmdev.h>
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#include <VBox/pdmifs.h>
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#define TIMESYNC_BACKDOOR
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsynctypedef struct DISPLAYCHANGEINFO
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync{
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t xres;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t yres;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t bpp;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t display;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync} DISPLAYCHANGEINFO;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsynctypedef struct DISPLAYCHANGEREQUEST
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync{
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fPending;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment[3];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync DISPLAYCHANGEINFO displayChangeRequest;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync DISPLAYCHANGEINFO lastReadDisplayChangeRequest;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync} DISPLAYCHANGEREQUEST;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsynctypedef struct DISPLAYCHANGEDATA
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync{
881b5ff6bc55e1fb0f4ef42f9782ccec79c0a138vboxsync /* Which monitor is being reported to the guest. */
881b5ff6bc55e1fb0f4ef42f9782ccec79c0a138vboxsync int iCurrentMonitor;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** true if the guest responded to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST at least once */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fGuestSentChangeEventAck;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment[3];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync DISPLAYCHANGEREQUEST aRequests[64]; // @todo maxMonitors
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync} DISPLAYCHANGEDATA;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync/** device structure containing all state information */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsynctypedef struct VMMDevState
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync{
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The PCI device structure. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PCIDevice dev;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
9621896680fea9b2078823e8ef2e64cec5bf2da0vboxsync /** The critical section for this device. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMCRITSECT CritSect;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** hypervisor address space size */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t hypervisorSize;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** mouse capabilities of host and guest */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t mouseCapabilities;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** absolute mouse position in pixels */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t mouseXAbs;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t mouseYAbs;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Does the guest currently want the host pointer to be shown? */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t fHostCursorRequested;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32Alignment0;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Pointer to device instance. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PPDMDEVINSR3 pDevIns;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0 + Status: VMMDev port base interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMIBASE IBase;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0: VMMDev port interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMIVMMDEVPORT IPort;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifdef VBOX_WITH_HGCM
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0: HGCM port interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMIHGCMPORT IHGCMPort;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Pointer to base interface of the driver. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(PPDMIBASE) pDrvBase;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDev connector interface */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(PPDMIVMMDEVCONNECTOR) pDrv;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifdef VBOX_WITH_HGCM
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** HGCM connector interface */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(PPDMIHGCMCONNECTOR) pHGCMDrv;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTR3PTR PtrR3Alignment1;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** message buffer for backdoor logging. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szMsg[512];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** message buffer index. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t iMsg;
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync /** Base port in the assigned I/O space. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTIOPORT PortBase;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTIOPORT PortAlignment2;
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** IRQ number assigned to the device */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t irq;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Current host side event flags */
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsync uint32_t u32HostEventFlags;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Mask of events guest is interested in. Note that the HGCM events
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * are enabled automatically by the VMMDev device when guest issues
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * HGCM commands.
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync */
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync uint32_t u32GuestFilterMask;
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync /** Delayed mask of guest events */
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync uint32_t u32NewGuestFilterMask;
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync /** Flag whether u32NewGuestFilterMask is valid */
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync bool fNewGuestFilterMask;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment3[3];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** GC physical address of VMMDev RAM area */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTGCPHYS32 GCPhysVMMDevRAM;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** R3 pointer to VMMDev RAM area */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync R3PTRTYPE(VMMDevMemory *) pVMMDevRAMR3;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** R3 pointer to VMMDev Heap RAM area
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(VMMDevMemory *) pVMMDevHeapR3;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** GC physical address of VMMDev Heap RAM area */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTGCPHYS32 GCPhysVMMDevHeap;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Information reported by guest via VMMDevReportGuestInfo generic request.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Until this information is reported the VMMDev refuses any other requests.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync VBoxGuestInfo guestInfo;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Information reported by guest via VMMDevReportGuestCapabilities. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t guestCaps;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** "Additions are Ok" indicator, set to true after processing VMMDevReportGuestInfo,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * if additions version is compatible. This flag is here to avoid repeated comparing
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * of the version in guestInfo.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t fu32AdditionsOk;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Video acceleration status set by guest. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32VideoAccelEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync DISPLAYCHANGEDATA displayChangeData;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync /** credentials for guest logon purposes */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szUserName[VMMDEV_CREDENTIALS_STRLEN];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szPassword[VMMDEV_CREDENTIALS_STRLEN];
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync char szDomain[VMMDEV_CREDENTIALS_STRLEN];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fAllowInteractiveLogon;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } credentialsLogon;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** credentials for verification by guest */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szUserName[VMMDEV_CREDENTIALS_STRLEN];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szPassword[VMMDEV_CREDENTIALS_STRLEN];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char szDomain[VMMDEV_CREDENTIALS_STRLEN];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } credentialsJudge;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment4[HC_ARCH_BITS == 32 ? 7 : 7];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* memory balloon change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32MemoryBalloonSize, u32LastMemoryBalloonSize;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* guest ram size */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint64_t cbGuestRAM;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* unique session id; the id will be different after each start, reset or restore of the VM. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint64_t idSession;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* statistics interval change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32StatIntervalSize, u32LastStatIntervalSize;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* seamless mode change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fLastSeamlessEnabled, fSeamlessEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment5[1];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fVRDPEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32VRDPExperienceLevel;
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifdef TIMESYNC_BACKDOOR
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint64_t hostTime;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fTimesyncBackdoorLo;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afAlignment6[3];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if GetHostTime should fail.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Loaded from the GetHostTimeDisabled configuration value. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fGetHostTimeDisabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if backdoor logging should be disabled (output will be ignored then) */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fBackdoorLogDisabled;
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Don't clear credentials */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fKeepCredentials;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Heap enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fHeapEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifdef VBOX_WITH_HGCM
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** List of pending HGCM requests, used for saving the HGCM state. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(PVBOXHGCMCMD) pHGCMCmdList;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Critical section to protect the list. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTCRITSECT critsectHGCMCmdList;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Whether the HGCM events are already automatically enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32HGCMEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync uint32_t u32Alignment7;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* VBOX_WITH_HGCM */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Status LUN: Shared folders LED */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The LED. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMLED Led;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The LED ports. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync PDMILEDPORTS ILeds;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Partner of ILeds. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync R3PTRTYPE(PPDMILEDCONNECTORS) pLedsConnector;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } SharedFolders;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** FLag whether CPU hotplug events are monitored */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fCpuHotPlugEventsEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afPadding8[3];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** CPU hotplug event */
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync VMMDevCpuEventType enmCpuHotPlugEvent;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Core id of the CPU to change */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t idCpuCore;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Package id of the CPU to changhe */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync uint32_t idCpuPackage;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t StatMemBalloonChunks;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if RC/R0 is enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool fRZEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if testing is enabled. */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync bool fTestingEnabled;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync bool afPadding9[HC_ARCH_BITS == 32 ? 2 : 2];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#ifndef VBOX_WITHOUT_TESTING_FEATURES
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The high timestamp value. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32TestingHighTimestamp;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The current testing command (VMMDEV_TESTING_CMD_XXX). */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32TestingCmd;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The testing data offset (command specific). */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t offTestingData;
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync /** For buffering the what comes in over the testing data port. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync union
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char padding[128];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_INIT, VMMDEV_TESTING_CMD_SUB_NEW,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * VMMDEV_TESTING_CMD_FAILED. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync char sz[128];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } String, Init, SubNew, Failed;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_TERM, VMMDEV_TESTING_CMD_SUB_DONE. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t c;
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync } Error, Term, SubDone;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_VALUE. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync struct
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync {
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync RTUINT64U u64Value;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32Unit;
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync char szName[128 - 8 - 4];
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } Value;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync } TestingData;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* !VBOX_WITHOUT_TESTING_FEATURES */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync} VMMDevState;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsyncAssertCompileMemberAlignment(VMMDevState, CritSect, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, cbGuestRAM, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, enmCpuHotPlugEvent, 4);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsync#ifndef VBOX_WITHOUT_TESTING_FEATURES
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, TestingData.Value.u64Value, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsync#endif
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsync
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsync
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncvoid VMMDevNotifyGuest (VMMDevState *pVMMDevState, uint32_t u32EventMask);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncvoid VMMDevCtlSetGuestFilterMask (VMMDevState *pVMMDevState,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32OrMask,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32NotMask);
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* !___VMMDev_VMMDevState_h */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync