diff options
Diffstat (limited to 'include/VBox/HGSMI/HGSMIChSetup.h')
-rw-r--r-- | include/VBox/HGSMI/HGSMIChSetup.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/include/VBox/HGSMI/HGSMIChSetup.h b/include/VBox/HGSMI/HGSMIChSetup.h new file mode 100644 index 00000000..5f116510 --- /dev/null +++ b/include/VBox/HGSMI/HGSMIChSetup.h @@ -0,0 +1,72 @@ +/** @file + * VBox Host Guest Shared Memory Interface (HGSMI), sHost/Guest shared part. + */ + +/* + * Copyright (C) 2006-2009 Oracle Corporation + * + * This file is part of VirtualBox Open Source Edition (OSE), as + * available from http://www.virtualbox.org. This file is free software; + * you can redistribute it and/or modify it under the terms of the GNU + * 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. + * + * The contents of this file may alternatively be used under the terms + * of the Common Development and Distribution License Version 1.0 + * (CDDL) only, as it comes in the "COPYING.CDDL" file of the + * VirtualBox OSE distribution, in which case the provisions of the + * CDDL are applicable instead of those of the GPL. + * + * You may elect to license modified versions of this file under the + * terms and conditions of either the GPL or the CDDL or both. + */ + +#ifndef ___VBox_HGSMI_HGSMIChSetup_h +#define ___VBox_HGSMI_HGSMIChSetup_h + +#include <VBox/HGSMI/HGSMI.h> + +/* HGSMI setup and configuration channel commands and data structures. */ +#define HGSMI_CC_HOST_FLAGS_LOCATION 0 /* Tell the host the location of HGSMIHOSTFLAGS structure, + * where the host can write information about pending + * buffers, etc, and which can be quickly polled by + * the guest without a need to port IO. + */ + +typedef struct _HGSMIBUFFERLOCATION +{ + HGSMIOFFSET offLocation; + HGSMISIZE cbLocation; +} HGSMIBUFFERLOCATION; +AssertCompileSize(HGSMIBUFFERLOCATION, 8); + +/* HGSMI setup and configuration data structures. */ +/* host->guest commands pending, should be accessed under FIFO lock only */ +#define HGSMIHOSTFLAGS_COMMANDS_PENDING 0x1 +/* IRQ is fired, should be accessed under VGAState::lock only */ +#define HGSMIHOSTFLAGS_IRQ 0x2 +#ifdef VBOX_WITH_WDDM +/* one or more guest commands is completed, should be accessed under FIFO lock only */ +# define HGSMIHOSTFLAGS_GCOMMAND_COMPLETED 0x4 +/* watchdog timer interrupt flag (used for debugging), should be accessed under VGAState::lock only */ +# define HGSMIHOSTFLAGS_WATCHDOG 0x8 +#endif +/* vsync interrupt flag, should be accessed under VGAState::lock only */ +#define HGSMIHOSTFLAGS_VSYNC 0x10 + +typedef struct _HGSMIHOSTFLAGS +{ + /* host flags can be accessed and modified in multiple threads concurrently, + * e.g. CrOpenGL HGCM and GUI threads when to completing HGSMI 3D and Video Accel respectively, + * EMT thread when dealing with HGSMI command processing, etc. + * Besides settings/cleaning flags atomically, some each flag has its own special sync restrictions, + * see commants for flags definitions above */ + volatile uint32_t u32HostFlags; + uint32_t au32Reserved[3]; +} HGSMIHOSTFLAGS; +AssertCompileSize(HGSMIHOSTFLAGS, 16); + +#endif + |