diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
|---|---|---|
| committer | <> | 2014-05-08 15:03:54 +0000 |
| commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
| tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/VMM/include/VMMInternal.h | |
| parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
| download | VirtualBox-master.tar.gz | |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/VMM/include/VMMInternal.h')
| -rw-r--r-- | src/VBox/VMM/include/VMMInternal.h | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/src/VBox/VMM/include/VMMInternal.h b/src/VBox/VMM/include/VMMInternal.h index 38b45a72..fa3f253d 100644 --- a/src/VBox/VMM/include/VMMInternal.h +++ b/src/VBox/VMM/include/VMMInternal.h @@ -4,7 +4,7 @@ */ /* - * Copyright (C) 2006-2007 Oracle Corporation + * Copyright (C) 2006-2012 Oracle Corporation * * This file is part of VirtualBox Open Source Edition (OSE), as * available from http://www.virtualbox.org. This file is free software; @@ -21,10 +21,10 @@ #include <VBox/cdefs.h> #include <VBox/sup.h> #include <VBox/vmm/stam.h> +#include <VBox/vmm/vmm.h> #include <VBox/log.h> #include <iprt/critsect.h> - #if !defined(IN_VMM_R3) && !defined(IN_VMM_R0) && !defined(IN_VMM_RC) # error "Not in VMM! This is an internal header!" #endif @@ -47,7 +47,7 @@ * so you have to sign up here by adding your defined(DEBUG_<userid>) to the * #if, or by adding VBOX_WITH_R0_LOGGING to your LocalConfig.kmk. */ -#if defined(DEBUG_sandervl) || defined(DEBUG_frank) || defined(DOXYGEN_RUNNING) +#if defined(DEBUG_sandervl) || defined(DEBUG_frank) || defined(DEBUG_ramshankar) || defined(DOXYGEN_RUNNING) # define VBOX_WITH_R0_LOGGING #endif @@ -216,19 +216,18 @@ typedef struct VMM RTR0PTR pvCoreCodeR0; /** Pointer to core code guest context mapping. */ RTRCPTR pvCoreCodeRC; - RTRCPTR pRCPadding0; /**< Alignment padding */ + RTRCPTR pRCPadding0; /**< Alignment padding. */ #ifdef VBOX_WITH_NMI /** The guest context address of the APIC (host) mapping. */ RTRCPTR GCPtrApicBase; - RTRCPTR pRCPadding1; /**< Alignment padding */ + RTRCPTR pRCPadding1; /**< Alignment padding. */ #endif /** The current switcher. * This will be set before the VMM is fully initialized. */ VMMSWITCHER enmSwitcher; - /** Flag to disable the switcher permanently (VMX) (boolean) */ - bool fSwitcherDisabled; /** Array of offsets to the different switchers within the core code. */ - RTUINT aoffSwitchers[VMMSWITCHER_MAX]; + uint32_t aoffSwitchers[VMMSWITCHER_MAX]; + uint32_t u32Padding2; /**< Alignment padding. */ /** Resume Guest Execution. See CPUMGCResumeGuest(). */ RTRCPTR pfnCPUMRCResumeGuest; @@ -418,6 +417,16 @@ typedef struct VMMCPU * This is NULL if logging is disabled. */ R0PTRTYPE(PVMMR0LOGGER) pR0LoggerR0; + /** @name Thread-context hooks. + * @{*/ + R0PTRTYPE(RTTHREADCTX) hR0ThreadCtx; +#if HC_ARCH_BITS == 32 + uint32_t u32Padding; +#else + uint64_t u64Padding; +#endif + /** @} */ + /** @name Rendezvous * @{ */ /** Whether the EMT is executing a rendezvous right now. For detecting @@ -431,7 +440,7 @@ typedef struct VMMCPU SUPDRVTRACERUSRCTX TracerCtx; /** @} */ - /** Alignment padding, making sure u64CallRing3Arg is nicly aligned. */ + /** Alignment padding, making sure u64CallRing3Arg is nicely aligned. */ uint32_t au32Padding1[3]; /** @name Call Ring-3 @@ -445,12 +454,15 @@ typedef struct VMMCPU int32_t rcCallRing3; /** The argument to the operation. */ uint64_t u64CallRing3Arg; + /** The Ring-0 notification callback. */ + R0PTRTYPE(PFNVMMR0CALLRING3NOTIFICATION) pfnCallRing3CallbackR0; + /** The Ring-0 notification callback user argument. */ + R0PTRTYPE(void *) pvCallRing3CallbackUserR0; /** The Ring-0 jmp buffer. * @remarks The size of this type isn't stable in assembly, so don't put * anything that needs to be accessed from assembly after it. */ VMMR0JMPBUF CallRing3JmpBufR0; /** @} */ - } VMMCPU; AssertCompileMemberAlignment(VMMCPU, TracerCtx, 8); /** Pointer to VMMCPU. */ @@ -506,17 +518,35 @@ typedef enum VMMGCOPERATION /** Testcase for checking interrupt masking.. */ VMMGC_DO_TESTCASE_INTERRUPT_MASKING, /** Switching testing and profiling stub. */ - VMMGC_DO_TESTCASE_HWACCM_NOP, + VMMGC_DO_TESTCASE_HM_NOP, /** The usual 32-bit hack. */ VMMGC_DO_32_BIT_HACK = 0x7fffffff } VMMGCOPERATION; + +/** + * MSR test result entry. + */ +typedef struct VMMTESTMSRENTRY +{ + /** The MSR number, including padding. + * Set to UINT64_MAX if invalid MSR. */ + uint64_t uMsr; + /** The register value. */ + uint64_t uValue; +} VMMTESTMSRENTRY; +/** Pointer to an MSR test result entry. */ +typedef VMMTESTMSRENTRY *PVMMTESTMSRENTRY; + + + RT_C_DECLS_BEGIN int vmmInitFormatTypes(void); void vmmTermFormatTypes(void); +uint32_t vmmGetBuildType(void); #ifdef IN_RING3 int vmmR3SwitcherInit(PVM pVM); |
