VMMDevState.h revision 9bdd3a815b34951f7ad0589e401fc813bff7ad4a
5b281ba489ca18f0380d7efc7a5108b606cce449vboxsync * VMMDev - Guest <-> VMM/Host communication device, internal header.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Copyright (C) 2006-2007 Oracle Corporation
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.
881b5ff6bc55e1fb0f4ef42f9782ccec79c0a138vboxsync /* Which monitor is being reported to the guest. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** true if the guest responded to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST at least once */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync DISPLAYCHANGEREQUEST aRequests[64]; // @todo maxMonitors
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync/** device structure containing all state information */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsynctypedef struct VMMDevState
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The PCI device structure. */
9621896680fea9b2078823e8ef2e64cec5bf2da0vboxsync /** The critical section for this device. */
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** hypervisor address space size */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** mouse capabilities of host and guest */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** absolute mouse position in pixels */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Does the guest currently want the host pointer to be shown? */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Pointer to device instance. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0 + Status: VMMDev port base interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0: VMMDev port interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** LUN\#0: HGCM port interface. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Pointer to base interface of the driver. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDev connector interface */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** HGCM connector interface */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** message buffer for backdoor logging. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** message buffer index. */
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync /** Base port in the assigned I/O space. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** IRQ number assigned to the device */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Current host side event flags */
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 /** Delayed mask of guest events */
3f1eb07aba9eee6394f3084c956149ee9a27df09vboxsync /** Flag whether u32NewGuestFilterMask is valid */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** GC physical address of VMMDev RAM area */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** R3 pointer to VMMDev RAM area */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** R3 pointer to VMMDev Heap RAM area
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** GC physical address of VMMDev Heap RAM area */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Information reported by guest via VMMDevReportGuestInfo generic request.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Until this information is reported the VMMDev refuses any other requests.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Information reported by guest via VMMDevReportGuestCapabilities. */
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 /** Video acceleration status set by guest. */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync /** credentials for guest logon purposes */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** credentials for verification by guest */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* memory balloon change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32MemoryBalloonSize, u32LastMemoryBalloonSize;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* guest ram size */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* unique session id; the id will be different after each start, reset or restore of the VM. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* statistics interval change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync uint32_t u32StatIntervalSize, u32LastStatIntervalSize;
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /* seamless mode change request */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if GetHostTime should fail.
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * Loaded from the GetHostTimeDisabled configuration value. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if backdoor logging should be disabled (output will be ignored then) */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Don't clear credentials */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Heap enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** List of pending HGCM requests, used for saving the HGCM state. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Critical section to protect the list. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Whether the HGCM events are already automatically enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* VBOX_WITH_HGCM */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Status LUN: Shared folders LED */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The LED. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The LED ports. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Partner of ILeds. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** FLag whether CPU hotplug events are monitored */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** CPU hotplug event */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Core id of the CPU to change */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Package id of the CPU to changhe */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if RC/R0 is enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Set if testing is enabled. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** Alignment padding. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The high timestamp value. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The current testing command (VMMDEV_TESTING_CMD_XXX). */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** The testing data offset (command specific). */
f0ed7ab5e7f8d2f73b5aa08e46eb3a04cbb31cb2vboxsync /** For buffering the what comes in over the testing data port. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_INIT, VMMDEV_TESTING_CMD_SUB_NEW,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync * VMMDEV_TESTING_CMD_FAILED. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_TERM, VMMDEV_TESTING_CMD_SUB_DONE. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync /** VMMDEV_TESTING_CMD_VALUE. */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* !VBOX_WITHOUT_TESTING_FEATURES */
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsyncAssertCompileMemberAlignment(VMMDevState, CritSect, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, cbGuestRAM, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, enmCpuHotPlugEvent, 4);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncAssertCompileMemberAlignment(VMMDevState, TestingData.Value.u64Value, 8);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncvoid VMMDevNotifyGuest (VMMDevState *pVMMDevState, uint32_t u32EventMask);
0cde281779e97ead3181bbd3b628451fa2b1efe1vboxsyncvoid VMMDevCtlSetGuestFilterMask (VMMDevState *pVMMDevState,
d1c5a03c19683c719b94496bb998fde2f2e5e622vboxsync#endif /* !___VMMDev_VMMDevState_h */