VMMDevState.h revision e55433cb7d930b803d6aff5794b20e5e202ba1fd
/* $Id$ */
/** @file
*/
/*
* Copyright (C) 2006-2007 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef ___VMMDev_VMMDevState_h
#define ___VMMDev_VMMDevState_h
#define TIMESYNC_BACKDOOR
typedef struct DISPLAYCHANGEINFO
{
typedef struct DISPLAYCHANGEREQUEST
{
bool fPending;
bool afAlignment[3];
typedef struct DISPLAYCHANGEDATA
{
/* Which monitor is being reported to the guest. */
int iCurrentMonitor;
/** true if the guest responded to VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST at least once */
bool fGuestSentChangeEventAck;
bool afAlignment[3];
/**
* Credentials for automatic guest logon and host configured logon (?).
*
* This is not stored in the same block as the instance data in order to make it
* harder to access.
*/
typedef struct VMMDEVCREDS
{
/** credentials for guest logon purposes */
struct
{
bool fAllowInteractiveLogon;
} Logon;
/** credentials for verification by guest */
struct
{
} Judge;
} VMMDEVCREDS;
/** device structure containing all state information */
typedef struct VMMDevState
{
/** The PCI device structure. */
/** The critical section for this device. */
/** hypervisor address space size */
/** mouse capabilities of host and guest */
/** absolute mouse position in pixels */
/** Does the guest currently want the host pointer to be shown? */
/** Alignment padding. */
/** Pointer to device instance. */
/** LUN\#0 + Status: VMMDev port base interface. */
/** LUN\#0: VMMDev port interface. */
#ifdef VBOX_WITH_HGCM
/** LUN\#0: HGCM port interface. */
#endif
/** Pointer to base interface of the driver. */
/** VMMDev connector interface */
#ifdef VBOX_WITH_HGCM
/** HGCM connector interface */
#endif
/** Alignment padding. */
/** message buffer for backdoor logging. */
char szMsg[512];
/** message buffer index. */
/** Base port in the assigned I/O space. */
/** Alignment padding. */
/** IRQ number assigned to the device */
/** Current host side event flags */
/** Mask of events guest is interested in. Note that the HGCM events
* are enabled automatically by the VMMDev device when guest issues
* HGCM commands.
*/
/** Delayed mask of guest events */
/** Flag whether u32NewGuestFilterMask is valid */
bool fNewGuestFilterMask;
/** Alignment padding. */
bool afAlignment3[3];
/** GC physical address of VMMDev RAM area */
/** R3 pointer to VMMDev RAM area */
/** R3 pointer to VMMDev Heap RAM area
*/
/** GC physical address of VMMDev Heap RAM area */
/** Information reported by guest via VMMDevReportGuestInfo generic request.
* Until this information is reported the VMMDev refuses any other requests.
*/
/** Information reported by guest via VMMDevReportGuestCapabilities. */
/** "Additions are Ok" indicator, set to true after processing VMMDevReportGuestInfo,
* if additions version is compatible. This flag is here to avoid repeated comparing
* of the version in guestInfo.
*/
/** Video acceleration status set by guest. */
/** Pointer to the credentials. */
/* memory balloon change request */
/* guest ram size */
/* unique session id; the id will be different after each start, reset or restore of the VM. */
/* statistics interval change request */
/* seamless mode change request */
bool afAlignment5[1];
bool fVRDPEnabled;
#ifdef TIMESYNC_BACKDOOR
bool fTimesyncBackdoorLo;
bool afAlignment6[3];
#endif
/** Set if GetHostTime should fail.
* Loaded from the GetHostTimeDisabled configuration value. */
bool fGetHostTimeDisabled;
/** Set if backdoor logging should be disabled (output will be ignored then) */
bool fBackdoorLogDisabled;
/** Don't clear credentials */
bool fKeepCredentials;
/** Heap enabled. */
bool fHeapEnabled;
#ifdef VBOX_WITH_HGCM
/** List of pending HGCM requests, used for saving the HGCM state. */
/** Critical section to protect the list. */
/** Whether the HGCM events are already automatically enabled. */
/** Alignment padding. */
#endif /* VBOX_WITH_HGCM */
/** Status LUN: Shared folders LED */
struct
{
/** The LED. */
/** The LED ports. */
/** Partner of ILeds. */
/** FLag whether CPU hotplug events are monitored */
bool fCpuHotPlugEventsEnabled;
/** Alignment padding. */
bool afPadding8[3];
/** CPU hotplug event */
/** Core id of the CPU to change */
/** Package id of the CPU to changhe */
bool fRZEnabled;
/** Set if testing is enabled. */
bool fTestingEnabled;
/** Alignment padding. */
#ifndef VBOX_WITHOUT_TESTING_FEATURES
/** The high timestamp value. */
/** The current testing command (VMMDEV_TESTING_CMD_XXX). */
/** The testing data offset (command specific). */
/** For buffering the what comes in over the testing data port. */
union
{
char padding[128];
/** VMMDEV_TESTING_CMD_INIT, VMMDEV_TESTING_CMD_SUB_NEW,
* VMMDEV_TESTING_CMD_FAILED. */
struct
{
char sz[128];
/** VMMDEV_TESTING_CMD_TERM, VMMDEV_TESTING_CMD_SUB_DONE. */
struct
{
uint32_t c;
/** VMMDEV_TESTING_CMD_VALUE. */
struct
{
} Value;
} TestingData;
#endif /* !VBOX_WITHOUT_TESTING_FEATURES */
} VMMDevState;
#ifndef VBOX_WITHOUT_TESTING_FEATURES
#endif
#endif /* !___VMMDev_VMMDevState_h */