VirtualBox

source: vbox/trunk/src/VBox/VMM/include/GIMInternal.h@ 57989

Last change on this file since 57989 was 57989, checked in by vboxsync, 9 years ago

Added support for GIM Hyper-V hypercalls and guest debugging.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1/* $Id: GIMInternal.h 57989 2015-10-01 16:44:12Z vboxsync $ */
2/** @file
3 * GIM - Internal header file.
4 */
5
6/*
7 * Copyright (C) 2014-2015 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef ___GIMInternal_h
19#define ___GIMInternal_h
20
21#include <VBox/vmm/gim.h>
22#include <VBox/vmm/pgm.h>
23#include "GIMHvInternal.h"
24#include "GIMKvmInternal.h"
25#include "GIMMinimalInternal.h"
26
27RT_C_DECLS_BEGIN
28
29/** @defgroup grp_gim_int Internal
30 * @ingroup grp_gim
31 * @internal
32 * @{
33 */
34
35/** The saved state version. */
36#define GIM_SAVED_STATE_VERSION 1
37
38/**
39 * GIM VM Instance data.
40 * Changes to this must checked against the padding of the gim union in VM!
41 */
42typedef struct GIM
43{
44 /** The provider that is active for this VM. */
45 GIMPROVIDERID enmProviderId;
46 /** The interface implementation version. */
47 uint32_t u32Version;
48
49 /** Physical access handler type for semi-read-only MMIO2 memory. Lazy creation. */
50 PGMPHYSHANDLERTYPE hSemiReadOnlyMmio2Handler;
51 /** Alignment padding. */
52 uint32_t u32Padding;
53
54 /** Pointer to the GIM device - R3 ptr. */
55 R3PTRTYPE(PPDMDEVINS) pDevInsR3;
56 /** Pointer to the GIM device debug stream - R3 ptr. */
57 R3PTRTYPE(PPDMISTREAM) pDebugStreamR3;
58#if 0
59 /** Pointer to the provider's ring-3 hypercall handler. */
60 R3PTRTYPE(PFNGIMHYPERCALL) pfnHypercallR3;
61 /** Pointer to the provider's ring-0 hypercall handler. */
62 R0PTRTYPE(PFNGIMHYPERCALL) pfnHypercallR0;
63 /** Pointer to the provider's raw-mode context hypercall handler. */
64 RCPTRTYPE(PFNGIMHYPERCALL) pfnHypercallRC;
65
66 /** Pointer to the provider's ring-3 MSR-read handler. */
67 R3PTRTYPE(PFNGIMRDMSR) pfnReadMsrR3;
68 /** Pointer to the provider's ring-0 MSR-read handler. */
69 R0PTRTYPE(PFNGIMRDMSR) pfnReadMsrR0;
70 /** Pointer to the provider's raw-mode context MSR-read handler. */
71 RCPTRTYPE(PFNGIMRDMSR) pfnReadMsrRC;
72
73 /** Pointer to the provider's ring-3 MSR-read handler. */
74 R3PTRTYPE(PFNGIMWDMSR) pfnWriteMsrR3;
75 /** Pointer to the provider's ring-0 MSR-read handler. */
76 R0PTRTYPE(PFNGIMWDMSR) pfnWriteMsrRR0;
77 /** Pointer to the provider's raw-mode context MSR-read handler. */
78 RCPTRTYPE(PFNGIMWDMSR) pfnWriteMsrRRC;
79#endif
80
81 union
82 {
83 GIMHV Hv;
84 GIMKVM Kvm;
85 } u;
86} GIM;
87/** Pointer to GIM VM instance data. */
88typedef GIM *PGIM;
89
90
91/**
92 * GIM VMCPU Instance data.
93 */
94typedef struct GIMCPU
95{
96 union
97 {
98 GIMKVMCPU KvmCpu;
99 } u;
100} GIMCPU;
101/** Pointer to GIM VMCPU instance data. */
102typedef GIMCPU *PGIMCPU;
103
104#ifdef IN_RING3
105VMMR3_INT_DECL(int) GIMR3Mmio2Unmap(PVM pVM, PGIMMMIO2REGION pRegion);
106VMMR3_INT_DECL(int) GIMR3Mmio2Map(PVM pVM, PGIMMMIO2REGION pRegion, RTGCPHYS GCPhysRegion);
107VMMR3_INT_DECL(int) GIMR3Mmio2HandlerPhysicalRegister(PVM pVM, PGIMMMIO2REGION pRegion);
108VMMR3_INT_DECL(int) GIMR3Mmio2HandlerPhysicalDeregister(PVM pVM, PGIMMMIO2REGION pRegion);
109
110VMMR3_INT_DECL(int) GIMR3DebugRead(PVM pVM, void *pvRead, size_t *pcbRead);
111VMMR3_INT_DECL(int) GIMR3DebugWrite(PVM pVM, void *pvWrite, size_t *pcbWrite);
112#endif /* IN_RING3 */
113
114/** @} */
115
116RT_C_DECLS_END
117
118#endif
119
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