VirtualBox

source: vbox/trunk/include/VBox/hwaccm.h@ 4014

Last change on this file since 4014 was 3633, checked in by vboxsync, 17 years ago

VBox_hdr_h -> _VBox_hdr_h

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.3 KB
Line 
1/** @file
2 * HWACCM - Intel/AMD VM Hardware Support Manager
3 */
4
5/*
6 * Copyright (C) 2006-2007 innotek GmbH
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 as published by the Free Software Foundation,
12 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
13 * distribution. VirtualBox OSE is distributed in the hope that it will
14 * be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * If you received this file as part of a commercial VirtualBox
17 * distribution, then only the terms of your commercial VirtualBox
18 * license agreement apply instead of the previous paragraph.
19 */
20
21#ifndef ___VBox_hwaccm_h
22#define ___VBox_hwaccm_h
23
24#include <VBox/cdefs.h>
25#include <VBox/types.h>
26#include <VBox/pgm.h>
27
28
29/** @defgroup grp_hwaccm The VM Hardware Manager API
30 * @{
31 */
32
33
34__BEGIN_DECLS
35
36/**
37 * Query HWACCM state (enabled/disabled)
38 *
39 * @returns 0 - disabled, 1 - enabled
40 * @param pVM The VM to operate on.
41 */
42#define HWACCMIsEnabled(a) (a->fHWACCMEnabled)
43
44#ifdef IN_RING0
45/** @defgroup grp_hwaccm_r0 The VM Hardware Manager API
46 * @ingroup grp_hwaccm
47 * @{
48 */
49
50/**
51 * Does Ring-0 HWACCM initialization.
52 *
53 * This is mainly to check that the Host CPU mode is compatible
54 * with VMX or SVM.
55 *
56 * @returns VBox status code.
57 * @param pVM The VM to operate on.
58 */
59HWACCMR0DECL(int) HWACCMR0Init(PVM pVM);
60
61/** @} */
62#endif
63
64
65#ifdef IN_RING3
66/** @defgroup grp_hwaccm_r3 The VM Hardware Manager API
67 * @ingroup grp_hwaccm
68 * @{
69 */
70
71/**
72 * Checks if internal events are pending
73 *
74 * @returns boolean
75 * @param pVM The VM to operate on.
76 */
77HWACCMR3DECL(bool) HWACCMR3IsEventPending(PVM pVM);
78
79/**
80 * Initializes the HWACCM.
81 *
82 * @returns VBox status code.
83 * @param pVM The VM to operate on.
84 */
85HWACCMR3DECL(int) HWACCMR3Init(PVM pVM);
86
87/**
88 * Applies relocations to data and code managed by this
89 * component. This function will be called at init and
90 * whenever the VMM need to relocate it self inside the GC.
91 *
92 * The HWACCM will update the addresses used by the switcher.
93 *
94 * @param pVM The VM.
95 */
96HWACCMR3DECL(void) HWACCMR3Relocate(PVM pVM);
97
98/**
99 * Terminates the VMXM.
100 *
101 * Termination means cleaning up and freeing all resources,
102 * the VM it self is at this point powered off or suspended.
103 *
104 * @returns VBox status code.
105 * @param pVM The VM to operate on.
106 */
107HWACCMR3DECL(int) HWACCMR3Term(PVM pVM);
108
109/**
110 * VMXM reset callback.
111 *
112 * @param pVM The VM which is reset.
113 */
114HWACCMR3DECL(void) HWACCMR3Reset(PVM pVM);
115
116
117/**
118 * Checks if we can currently use hardware accelerated raw mode.
119 *
120 * @returns boolean
121 * @param pVM The VM to operate on.
122 * @param pCtx Partial VM execution context
123 */
124HWACCMR3DECL(bool) HWACCMR3CanExecuteGuest(PVM pVM, PCPUMCTX pCtx);
125
126
127/**
128 * Checks if we are currently using hardware accelerated raw mode.
129 *
130 * @returns boolean
131 * @param pVM The VM to operate on.
132 */
133HWACCMR3DECL(bool) HWACCMR3IsActive(PVM pVM);
134
135/**
136 * Checks hardware accelerated raw mode is allowed.
137 *
138 * @returns boolean
139 * @param pVM The VM to operate on.
140 */
141HWACCMR3DECL(bool) HWACCMR3IsAllowed(PVM pVM);
142
143/**
144 * Notification callback which is called whenever there is a chance that a CR3
145 * value might have changed.
146 * This is called by PGM.
147 *
148 * @param pVM The VM to operate on.
149 * @param enmShadowMode New paging mode.
150 */
151HWACCMR3DECL(void) HWACCMR3PagingModeChanged(PVM pVM, PGMMODE enmShadowMode);
152
153/** @} */
154#endif
155
156#ifdef IN_RING0
157/** @addtogroup grp_hwaccm_r0
158 * @{
159 */
160
161/**
162 * Does Ring-0 VMX initialization.
163 *
164 * @returns VBox status code.
165 * @param pVM The VM to operate on.
166 */
167HWACCMR0DECL(int) HWACCMR0SetupVMX(PVM pVM);
168
169
170/**
171 * Runs guest code in a VMX/SVM VM.
172 *
173 * @returns VBox status code.
174 * @param pVM The VM to operate on.
175 */
176HWACCMR0DECL(int) HWACCMR0RunGuestCode(PVM pVM);
177
178/**
179 * Enable VMX or SVN
180 *
181 * @returns VBox status code.
182 * @param pVM The VM to operate on.
183 */
184HWACCMR0DECL(int) HWACCMR0Enable(PVM pVM);
185
186
187/**
188 * Disable VMX or SVN
189 *
190 * @returns VBox status code.
191 * @param pVM The VM to operate on.
192 */
193HWACCMR0DECL(int) HWACCMR0Disable(PVM pVM);
194
195
196/** @} */
197#endif
198
199
200/** @} */
201__END_DECLS
202
203
204#endif
205
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette