VirtualBox

root/trunk/include/VBox/hwaccm.h

Revision 14106, 4.2 kB (checked in by vboxsync, 1 week ago)

Added dummy HWACCMR3InjectNMI.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /** @file
2  * HWACCM - Intel/AMD VM Hardware Support Manager
3  */
4
5 /*
6  * Copyright (C) 2006-2007 Sun Microsystems, Inc.
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  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
26  * Clara, CA 95054 USA or visit http://www.sun.com if you need
27  * additional information or have any questions.
28  */
29
30 #ifndef ___VBox_hwaccm_h
31 #define ___VBox_hwaccm_h
32
33 #include <VBox/cdefs.h>
34 #include <VBox/types.h>
35 #include <VBox/pgm.h>
36 #include <iprt/mp.h>
37
38
39 /** @defgroup grp_hwaccm      The VM Hardware Manager API
40  * @{
41  */
42
43 /**
44  * HWACCM state
45  */
46 typedef enum HWACCMSTATE
47 {
48     /* Not yet set */
49     HWACCMSTATE_UNINITIALIZED = 0,
50     /* Enabled */
51     HWACCMSTATE_ENABLED,
52     /* Disabled */
53     HWACCMSTATE_DISABLED,
54     /** The usual 32-bit hack. */
55     HWACCMSTATE_32BIT_HACK = 0x7fffffff
56 } HWACCMSTATE;
57
58 __BEGIN_DECLS
59
60 /**
61  * Query HWACCM state (enabled/disabled)
62  *
63  * @returns 0 - disabled, 1 - enabled
64  * @param   pVM         The VM to operate on.
65  */
66 #define HWACCMIsEnabled(pVM)    ((pVM)->fHWACCMEnabled)
67
68 VMMDECL(int)    HWACCMInvalidatePage(PVM pVM, RTGCPTR GCVirt);
69 VMMDECL(bool)   HWACCMHasPendingIrq(PVM pVM);
70
71 #ifndef IN_RC
72 VMMDECL(int)     HWACCMFlushTLB(PVM pVM);
73 VMMDECL(int)     HWACCMInvalidatePhysPage(PVM pVM, RTGCPHYS GCPhys);
74 VMMDECL(bool)    HWACCMIsNestedPagingActive(PVM pVM);
75 VMMDECL(PGMMODE) HWACCMGetPagingMode(PVM pVM);
76 VMMDECL(RTCPUID) HWACCMGetVMCPUId(PVM pVM);
77 #else
78 /* Nop in GC */
79 # define HWACCMFlushTLB(pVM)                    do { } while (0)
80 # define HWACCMIsNestedPagingActive(pVM)        false
81 #endif
82
83 #ifdef IN_RING0
84 /** @defgroup grp_hwaccm_r0    The VM Hardware Manager API
85  * @ingroup grp_hwaccm
86  * @{
87  */
88 VMMR0DECL(int)  HWACCMR0Init(void);
89 VMMR0DECL(int)  HWACCMR0Term(void);
90 VMMR0DECL(int)  HWACCMR0InitVM(PVM pVM);
91 VMMR0DECL(int)  HWACCMR0TermVM(PVM pVM);
92 VMMR0DECL(int)  HWACCMR0EnableAllCpus(PVM pVM, HWACCMSTATE enmNewHwAccmState);
93 /** @} */
94 #endif /* IN_RING0 */
95
96
97 #ifdef IN_RING3
98 /** @defgroup grp_hwaccm_r3    The VM Hardware Manager API
99  * @ingroup grp_hwaccm
100  * @{
101  */
102 VMMR3DECL(bool) HWACCMR3IsEventPending(PVM pVM);
103 VMMR3DECL(int)  HWACCMR3Init(PVM pVM);
104 VMMR3DECL(int)  HWACCMR3InitCPU(PVM pVM);
105 VMMR3DECL(int)  HWACCMR3InitFinalizeR0(PVM pVM);
106 VMMR3DECL(void) HWACCMR3Relocate(PVM pVM);
107 VMMR3DECL(int)  HWACCMR3Term(PVM pVM);
108 VMMR3DECL(int)  HWACCMR3TermCPU(PVM pVM);
109 VMMR3DECL(void) HWACCMR3Reset(PVM pVM);
110 VMMR3DECL(void) HWACCMR3CheckError(PVM pVM, int iStatusCode);
111 VMMR3DECL(bool) HWACCMR3CanExecuteGuest(PVM pVM, PCPUMCTX pCtx);
112 VMMR3DECL(bool) HWACCMR3IsActive(PVM pVM);
113 VMMR3DECL(bool) HWACCMR3IsNestedPagingActive(PVM pVM);
114 VMMR3DECL(bool) HWACCMR3IsAllowed(PVM pVM);
115 VMMR3DECL(void) HWACCMR3PagingModeChanged(PVM pVM, PGMMODE enmShadowMode, PGMMODE enmGuestMode);
116 VMMR3DECL(bool) HWACCMR3IsVPIDActive(PVM pVM);
117 VMMR3DECL(int)  HWACCMR3InjectNMI(PVM pVM);
118
119 /** @} */
120 #endif /* IN_RING3 */
121
122 #ifdef IN_RING0
123 /** @addtogroup grp_hwaccm_r0
124  * @{
125  */
126 VMMR0DECL(int)   HWACCMR0SetupVM(PVM pVM);
127 VMMR0DECL(int)   HWACCMR0RunGuestCode(PVM pVM, PVMCPU pVCpu);
128 VMMR0DECL(int)   HWACCMR0Enter(PVM pVM, PVMCPU pVCpu);
129 VMMR0DECL(int)   HWACCMR0Leave(PVM pVM, PVMCPU pVCpu);
130 VMMR0DECL(int)   HWACCMR0InvalidatePage(PVM pVM, PVMCPU pVCpu);
131 VMMR0DECL(int)   HWACCMR0FlushTLB(PVM pVM);
132 VMMR0DECL(bool)  HWACCMR0SuspendPending();
133 /** @} */
134 #endif /* IN_RING0 */
135
136
137 /** @} */
138 __END_DECLS
139
140
141 #endif
142
Note: See TracBrowser for help on using the browser.

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy