]>
Commit | Line | Data |
---|---|---|
056a1eb7 SF |
1 | /** @file |
2 | * VBox Host Guest Shared Memory Interface (HGSMI), sHost/Guest shared part. | |
3 | */ | |
4 | ||
5 | /* | |
6 | * Copyright (C) 2006-2016 Oracle Corporation | |
7 | * | |
8 | * This file is part of VirtualBox Open Source Edition (OSE), as | |
9 | * available from http://www.virtualbox.org. This file is free software; | |
10 | * you can redistribute it and/or modify it under the terms of the GNU | |
11 | * General Public License (GPL) as published by the Free Software | |
12 | * Foundation, in version 2 as it comes in the "COPYING" file of the | |
13 | * VirtualBox OSE distribution. VirtualBox OSE is distributed in the | |
14 | * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. | |
15 | * | |
16 | * The contents of this file may alternatively be used under the terms | |
17 | * of the Common Development and Distribution License Version 1.0 | |
18 | * (CDDL) only, as it comes in the "COPYING.CDDL" file of the | |
19 | * VirtualBox OSE distribution, in which case the provisions of the | |
20 | * CDDL are applicable instead of those of the GPL. | |
21 | * | |
22 | * You may elect to license modified versions of this file under the | |
23 | * terms and conditions of either the GPL or the CDDL or both. | |
24 | */ | |
25 | ||
26 | #ifndef ___VBox_HGSMI_HGSMIChSetup_h | |
27 | #define ___VBox_HGSMI_HGSMIChSetup_h | |
28 | ||
29 | #include <VBox/HGSMI/HGSMI.h> | |
30 | ||
31 | /* HGSMI setup and configuration channel commands and data structures. */ | |
32 | #define HGSMI_CC_HOST_FLAGS_LOCATION 0 /* Tell the host the location of HGSMIHOSTFLAGS structure, | |
33 | * where the host can write information about pending | |
34 | * buffers, etc, and which can be quickly polled by | |
35 | * the guest without a need to port IO. | |
36 | */ | |
37 | ||
38 | typedef struct HGSMIBUFFERLOCATION | |
39 | { | |
40 | HGSMIOFFSET offLocation; | |
41 | HGSMISIZE cbLocation; | |
42 | } HGSMIBUFFERLOCATION; | |
43 | AssertCompileSize(HGSMIBUFFERLOCATION, 8); | |
44 | ||
45 | /* HGSMI setup and configuration data structures. */ | |
46 | /* host->guest commands pending, should be accessed under FIFO lock only */ | |
47 | #define HGSMIHOSTFLAGS_COMMANDS_PENDING UINT32_C(0x1) | |
48 | /* IRQ is fired, should be accessed under VGAState::lock only */ | |
49 | #define HGSMIHOSTFLAGS_IRQ UINT32_C(0x2) | |
50 | #ifdef VBOX_WITH_WDDM | |
51 | /* one or more guest commands is completed, should be accessed under FIFO lock only */ | |
52 | # define HGSMIHOSTFLAGS_GCOMMAND_COMPLETED UINT32_C(0x4) | |
53 | /* watchdog timer interrupt flag (used for debugging), should be accessed under VGAState::lock only */ | |
54 | # define HGSMIHOSTFLAGS_WATCHDOG UINT32_C(0x8) | |
55 | #endif | |
56 | /* vsync interrupt flag, should be accessed under VGAState::lock only */ | |
57 | #define HGSMIHOSTFLAGS_VSYNC UINT32_C(0x10) | |
58 | /** monitor hotplug flag, should be accessed under VGAState::lock only */ | |
59 | #define HGSMIHOSTFLAGS_HOTPLUG UINT32_C(0x20) | |
60 | /** Cursor capability state change flag, should be accessed under | |
61 | * VGAState::lock only. @see VBVACONF32. */ | |
62 | #define HGSMIHOSTFLAGS_CURSOR_CAPABILITIES UINT32_C(0x40) | |
63 | ||
64 | typedef struct HGSMIHOSTFLAGS | |
65 | { | |
66 | /* host flags can be accessed and modified in multiple threads concurrently, | |
67 | * e.g. CrOpenGL HGCM and GUI threads when to completing HGSMI 3D and Video Accel respectively, | |
68 | * EMT thread when dealing with HGSMI command processing, etc. | |
69 | * Besides settings/cleaning flags atomically, some each flag has its own special sync restrictions, | |
70 | * see commants for flags definitions above */ | |
71 | volatile uint32_t u32HostFlags; | |
72 | uint32_t au32Reserved[3]; | |
73 | } HGSMIHOSTFLAGS; | |
74 | AssertCompileSize(HGSMIHOSTFLAGS, 16); | |
75 | ||
76 | #endif | |
77 |