VirtualBox

source: vbox/trunk/src/VBox/Devices/testcase/tstDeviceVMMInternal.h@ 76553

Last change on this file since 76553 was 76553, checked in by vboxsync, 6 years ago

scm --update-copyright-year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 17.0 KB
Line 
1/* $Id: tstDeviceVMMInternal.h 76553 2019-01-01 01:45:53Z vboxsync $ */
2/** @file
3 * tstDevice - Test framework for PDM devices/drivers, definitions of VMM internal types.
4 */
5
6/*
7 * Copyright (C) 2017-2019 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 ___tstDeviceVMMInternal_h
19#define ___tstDeviceVMMInternal_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24#include <VBox/types.h>
25#include <VBox/vmm/tm.h>
26#include <iprt/critsect.h>
27#include <iprt/list.h>
28
29RT_C_DECLS_BEGIN
30
31/** Pointer to a VMM callback table. */
32typedef struct TSTDEVVMMCALLBACKS *PTSTDEVVMMCALLBACKS;
33/** Pointer to a constant VMM callback table. */
34typedef const struct TSTDEVVMMCALLBACKS *PCTSTDEVVMMCALLBACKS;
35
36/** Pointer to the internal device under test instance. */
37typedef struct TSTDEVDUTINT *PTSTDEVDUTINT;
38/** Pointer to a constant device under test instance. */
39typedef const struct TSTDEVDUTINT *PCTSTDEVDUTINT;
40
41/**
42 * Private device instance data.
43 */
44typedef struct PDMDEVINSINT
45{
46 /** Pointer to the callback table. */
47 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
48 /** Pointer to the device under test the PDM device instance is for. */
49 PTSTDEVDUTINT pDut;
50} PDMDEVINSINT;
51AssertCompile(sizeof(PDMDEVINSINT) <= (HC_ARCH_BITS == 32 ? 72 : 112 + 0x28));
52
53/**
54 * CFGM node structure.
55 */
56typedef struct CFGMNODE
57{
58 /** Pointer to the callback table. */
59 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
60 /** Device under test this CFGM node is for. */
61 PTSTDEVDUTINT pDut;
62 /** @todo: */
63} CFGMNODE;
64
65/**
66 * PDM queue structure.
67 */
68typedef struct PDMQUEUE
69{
70 /** Pointer to the callback table. */
71 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
72 /** @todo: */
73} PDMQUEUE;
74
75/**
76 * TM timer structure.
77 */
78typedef struct TMTIMER
79{
80 /** Pointer to the callback table. */
81 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
82 /** List of timers created by the device. */
83 RTLISTNODE NdDevTimers;
84 /** Clock this timer belongs to. */
85 TMCLOCK enmClock;
86 /** Callback to call when the timer expires. */
87 PFNTMTIMERDEV pfnCallbackDev;
88 /** Opaque user data to pass to the callback. */
89 void *pvUser;
90 /** Flags. */
91 uint32_t fFlags;
92 /** @todo: */
93} TMTIMER;
94
95/**
96 * Internal VMM structure of VMCPU
97 */
98typedef struct VMMCPU
99{
100 /** Pointer to the callback table. */
101 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
102 /** @todo: */
103} VMMCPU;
104AssertCompile(sizeof(VMMCPU) <= 704);
105
106/**
107 * Internal VMM structure of VM
108 */
109typedef struct VMM
110{
111 /** Pointer to the callback table. */
112 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
113 /** @todo: */
114} VMM;
115AssertCompile(sizeof(VMM) <= 1600);
116
117/**
118 * Internal VM structure of VM
119 */
120typedef struct VMINT
121{
122 /** Pointer to the callback table. */
123 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
124 /** @todo: */
125} VMINT;
126AssertCompile(sizeof(VMINT) <= 24);
127
128/**
129 * Internal per vCPU user VM structure.
130 */
131typedef struct VMINTUSERPERVMCPU
132{
133 /** Pointer to the callback table. */
134 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
135 /** @todo: */
136} VMINTUSERPERVMCPU;
137AssertCompile(sizeof(VMINTUSERPERVMCPU) <= 512);
138
139/**
140 * Internal user VM structure.
141 */
142typedef struct VMINTUSERPERVM
143{
144 /** Pointer to the callback table. */
145 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
146 /** @todo: */
147} VMINTUSERPERVM;
148AssertCompile(sizeof(VMINTUSERPERVM) <= 512);
149
150/**
151 * Internal PDM critical section structure.
152 */
153typedef struct PDMCRITSECTINT
154{
155 /** Pointer to the callback table. */
156 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
157 /** The actual critical section used for emulation. */
158 RTCRITSECT CritSect;
159} PDMCRITSECTINT;
160AssertCompile(sizeof(PDMCRITSECTINT) <= (HC_ARCH_BITS == 32 ? 0x80 : 0xc0));
161
162/**
163 * Internal PDM thread instance data.
164 */
165typedef struct PDMTHREADINT
166{
167 /** Pointer to the callback table. */
168 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
169 /** Pointer to the device under test. */
170 PTSTDEVDUTINT pDut;
171 /** Node for the list of PDM threads. */
172 RTLISTNODE NdPdmThreads;
173} PDMTHREADINT;
174AssertCompile(sizeof(PDMTHREADINT) <= 64);
175
176/**
177 * MM Heap allocation.
178 */
179typedef struct TSTDEVMMHEAPALLOC
180{
181 /** Node for the list of allocations. */
182 RTLISTNODE NdMmHeap;
183 /** Pointer to the callback table. */
184 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
185 /** Pointer to the device under test the allocation was made for. */
186 PTSTDEVDUTINT pDut;
187 /** Size of the allocation. */
188 size_t cbAlloc;
189 /** Align the next member on a 16byte boundary. */
190 size_t uAlignment0;
191 /** Start of the real allocation. */
192 uint8_t abAlloc[RT_FLEXIBLE_ARRAY];
193} TSTDEVMMHEAPALLOC;
194/** Pointer to a MM Heap allocation. */
195typedef TSTDEVMMHEAPALLOC *PTSTDEVMMHEAPALLOC;
196/** Pointer to a const MM Heap allocation. */
197typedef const TSTDEVMMHEAPALLOC *PCTSTDEVMMHEAPALLOC;
198
199AssertCompileMemberAlignment(TSTDEVMMHEAPALLOC, abAlloc, HC_ARCH_BITS == 64 ? 16 : 8);
200
201#if 0
202/**
203 * Internal PDM netshaper filter instance data.
204 */
205typedef struct PDMNSFILTER
206{
207 /** Pointer to the callback table. */
208 PCTSTDEVVMMCALLBACKS pVmmCallbacks;
209 /** @todo: */
210} PDMNSFILTER;
211#endif
212
213#define PDMCRITSECTINT_DECLARED
214#define PDMTHREADINT_DECLARED
215#define PDMDEVINSINT_DECLARED
216#define ___VMInternal_h
217#define ___VMMInternal_h
218RT_C_DECLS_END
219#include <VBox/vmm/pdmcritsect.h>
220#include <VBox/vmm/vm.h>
221#include <VBox/vmm/uvm.h>
222#include <VBox/vmm/cfgm.h>
223#include <VBox/vmm/tm.h>
224#include <VBox/vmm/pdmblkcache.h>
225#include <VBox/vmm/pdmdev.h>
226#include <VBox/vmm/pdmqueue.h>
227#include <VBox/vmm/pdmthread.h>
228#include <VBox/vmm/cfgm.h>
229#include <VBox/vmm/mm.h>
230#include <VBox/vmm/pdmasynccompletion.h>
231#include <VBox/vmm/pdmnetshaper.h>
232#include <VBox/vmm/pgm.h>
233RT_C_DECLS_BEGIN
234
235
236/**
237 * Callback table from the VMM shim library to the PDM test framework.
238 */
239typedef struct TSTDEVVMMCALLBACKS
240{
241 DECLR3CALLBACKMEMBER(bool, pfnCFGMR3AreValuesValid, (PCFGMNODE pNode, const char *pszzValid));
242 DECLR3CALLBACKMEMBER(void, pfnCFGMR3Dump, (PCFGMNODE pRoot));
243 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetChild, (PCFGMNODE pNode, const char *pszPath));
244 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetChildFV, (PCFGMNODE pNode, const char *pszPathFormat, va_list Args));
245 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetFirstChild, (PCFGMNODE pNode));
246 DECLR3CALLBACKMEMBER(int, pfnCFGMR3GetName, (PCFGMNODE pCur, char *pszName, size_t cchName));
247 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetNextChild, (PCFGMNODE pCur));
248 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetParent, (PCFGMNODE pNode));
249 DECLR3CALLBACKMEMBER(PCFGMNODE, pfnCFGMR3GetRoot, (PVM pVM));
250 DECLR3CALLBACKMEMBER(int, pfnCFGMR3InsertNode, (PCFGMNODE pNode, const char *pszName, PCFGMNODE *ppChild));
251 DECLR3CALLBACKMEMBER(int, pfnCFGMR3InsertNodeFV, (PCFGMNODE pNode, PCFGMNODE *ppChild,
252 const char *pszNameFormat, va_list Args));
253 DECLR3CALLBACKMEMBER(int, pfnCFGMR3InsertString, (PCFGMNODE pNode, const char *pszName, const char *pszString));
254 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QueryBytes, (PCFGMNODE pNode, const char *pszName, void *pvData, size_t cbData));
255 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QueryInteger, (PCFGMNODE pNode, const char *pszName, uint64_t *pu64));
256 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QuerySize, (PCFGMNODE pNode, const char *pszName, size_t *pcb));
257 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QueryString, (PCFGMNODE pNode, const char *pszName, char *pszString, size_t cchString));
258 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QueryStringAlloc, (PCFGMNODE pNode, const char *pszName, char **ppszString));
259 DECLR3CALLBACKMEMBER(int, pfnCFGMR3QueryStringAllocDef, (PCFGMNODE pNode, const char *pszName, char **ppszString, const char *pszDef));
260 DECLR3CALLBACKMEMBER(void, pfnCFGMR3RemoveNode, (PCFGMNODE pNode));
261 DECLR3CALLBACKMEMBER(int, pfnCFGMR3ValidateConfig, (PCFGMNODE pNode, const char *pszNode,
262 const char *pszValidValues, const char *pszValidNodes,
263 const char *pszWho, uint32_t uInstance));
264
265 DECLR3CALLBACKMEMBER(int, pfnIOMIOPortWrite, (PVM pVM, PVMCPU pVCpu, RTIOPORT Port, uint32_t u32Value, size_t cbValue));
266 DECLR3CALLBACKMEMBER(int, pfnIOMMMIOMapMMIO2Page, (PVM pVM, RTGCPHYS GCPhys, RTGCPHYS GCPhysRemapped, uint64_t fPageFlags));
267 DECLR3CALLBACKMEMBER(int, pfnIOMMMIOResetRegion, (PVM pVM, RTGCPHYS GCPhys));
268 DECLR3CALLBACKMEMBER(int, pfnMMHyperAlloc, (PVM pVM, size_t cb, uint32_t uAlignment, MMTAG enmTag, void **ppv));
269 DECLR3CALLBACKMEMBER(int, pfnMMHyperFree, (PVM pVM, void *pv));
270 DECLR3CALLBACKMEMBER(RTR0PTR, pfnMMHyperR3ToR0, (PVM pVM, RTR3PTR R3Ptr));
271 DECLR3CALLBACKMEMBER(RTRCPTR, pfnMMHyperR3ToRC, (PVM pVM, RTR3PTR R3Ptr));
272 DECLR3CALLBACKMEMBER(void, pfnMMR3HeapFree, (void *pv));
273 DECLR3CALLBACKMEMBER(int, pfnMMR3HyperAllocOnceNoRel, (PVM pVM, size_t cb, uint32_t uAlignment, MMTAG enmTag, void **ppv));
274 DECLR3CALLBACKMEMBER(uint64_t, pfnMMR3PhysGetRamSize, (PVM pVM));
275 DECLR3CALLBACKMEMBER(uint64_t, pfnMMR3PhysGetRamSizeAbove4GB, (PVM pVM));
276 DECLR3CALLBACKMEMBER(uint32_t, pfnMMR3PhysGetRamSizeBelow4GB, (PVM pVM));
277 DECLR3CALLBACKMEMBER(int, pfnPDMCritSectEnterDebug, (PPDMCRITSECT pCritSect, int rcBusy, RTHCUINTPTR uId, RT_SRC_POS_DECL));
278 DECLR3CALLBACKMEMBER(bool, pfnPDMCritSectIsInitialized, (PCPDMCRITSECT pCritSect));
279 DECLR3CALLBACKMEMBER(bool, pfnPDMCritSectIsOwner, (PCPDMCRITSECT pCritSect));
280 DECLR3CALLBACKMEMBER(int, pfnPDMCritSectLeave, (PPDMCRITSECT pCritSect));
281 DECLR3CALLBACKMEMBER(int, pfnPDMCritSectTryEnterDebug, (PPDMCRITSECT pCritSect, RTHCUINTPTR uId, RT_SRC_POS_DECL));
282 DECLR3CALLBACKMEMBER(int, pfnPDMHCCritSectScheduleExitEvent, (PPDMCRITSECT pCritSect, SUPSEMEVENT hEventToSignal));
283 DECLR3CALLBACKMEMBER(bool, pfnPDMNsAllocateBandwidth, (PPDMNSFILTER pFilter, size_t cbTransfer));
284 DECLR3CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnPDMQueueAlloc, (PPDMQUEUE pQueue));
285 DECLR3CALLBACKMEMBER(bool, pfnPDMQueueFlushIfNecessary, (PPDMQUEUE pQueue));
286 DECLR3CALLBACKMEMBER(void, pfnPDMQueueInsert, (PPDMQUEUE pQueue, PPDMQUEUEITEMCORE pItem));
287 DECLR3CALLBACKMEMBER(R0PTRTYPE(PPDMQUEUE), pfnPDMQueueR0Ptr, (PPDMQUEUE pQueue));
288 DECLR3CALLBACKMEMBER(RCPTRTYPE(PPDMQUEUE), pfnPDMQueueRCPtr, (PPDMQUEUE pQueue));
289 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpClose, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint));
290 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpCreateForFile, (PPPDMASYNCCOMPLETIONENDPOINT ppEndpoint,
291 const char *pszFilename, uint32_t fFlags,
292 PPDMASYNCCOMPLETIONTEMPLATE pTemplate));
293 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpFlush, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, void *pvUser,
294 PPPDMASYNCCOMPLETIONTASK ppTask));
295 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpGetSize, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, uint64_t *pcbSize));
296 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpRead, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, RTFOFF off,
297 PCRTSGSEG paSegments, unsigned cSegments,
298 size_t cbRead, void *pvUser,
299 PPPDMASYNCCOMPLETIONTASK ppTask));
300 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpSetBwMgr, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, const char *pszBwMgr));
301 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpSetSize, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, uint64_t cbSize));
302 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionEpWrite, (PPDMASYNCCOMPLETIONENDPOINT pEndpoint, RTFOFF off,
303 PCRTSGSEG paSegments, unsigned cSegments,
304 size_t cbWrite, void *pvUser,
305 PPPDMASYNCCOMPLETIONTASK ppTask));
306 DECLR3CALLBACKMEMBER(int, pfnPDMR3AsyncCompletionTemplateDestroy, (PPDMASYNCCOMPLETIONTEMPLATE pTemplate));
307 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheClear, (PPDMBLKCACHE pBlkCache));
308 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheDiscard, (PPDMBLKCACHE pBlkCache, PCRTRANGE paRanges,
309 unsigned cRanges, void *pvUser));
310 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheFlush, (PPDMBLKCACHE pBlkCache, void *pvUser));
311 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheIoXferComplete, (PPDMBLKCACHE pBlkCache, PPDMBLKCACHEIOXFER hIoXfer, int rcIoXfer));
312 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheRead, (PPDMBLKCACHE pBlkCache, uint64_t off, PCRTSGBUF pSgBuf, size_t cbRead, void *pvUser));
313 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheRelease, (PPDMBLKCACHE pBlkCache));
314 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheResume, (PPDMBLKCACHE pBlkCache));
315 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheSuspend, (PPDMBLKCACHE pBlkCache));
316 DECLR3CALLBACKMEMBER(int, pfnPDMR3BlkCacheWrite, (PPDMBLKCACHE pBlkCache, uint64_t off, PCRTSGBUF pSgBuf, size_t cbWrite, void *pvUser));
317 DECLR3CALLBACKMEMBER(int, pfnPDMR3CritSectDelete, (PPDMCRITSECT pCritSect));
318 DECLR3CALLBACKMEMBER(int, pfnPDMR3QueryLun, (PUVM pUVM, const char *pszDevice, unsigned iInstance, unsigned iLun, PPPDMIBASE ppBase));
319 DECLR3CALLBACKMEMBER(int, pfnPDMR3ThreadDestroy, (PPDMTHREAD pThread, int *pRcThread));
320 DECLR3CALLBACKMEMBER(int, pfnPDMR3ThreadResume, (PPDMTHREAD pThread));
321 DECLR3CALLBACKMEMBER(int, pfnPDMR3ThreadSleep, (PPDMTHREAD pThread, RTMSINTERVAL cMillies));
322 DECLR3CALLBACKMEMBER(int, pfnPDMR3ThreadSuspend, (PPDMTHREAD pThread));
323 DECLR3CALLBACKMEMBER(uint64_t, pfnTMCpuTicksPerSecond, (PVM pVM));
324 DECLR3CALLBACKMEMBER(int, pfnTMR3TimerDestroy, (PTMTIMER pTimer));
325 DECLR3CALLBACKMEMBER(int, pfnTMR3TimerLoad, (PTMTIMERR3 pTimer, PSSMHANDLE pSSM));
326 DECLR3CALLBACKMEMBER(int, pfnTMR3TimerSave, (PTMTIMERR3 pTimer, PSSMHANDLE pSSM));
327 DECLR3CALLBACKMEMBER(int, pfnTMR3TimerSetCritSect, (PTMTIMERR3 pTimer, PPDMCRITSECT pCritSect));
328 DECLR3CALLBACKMEMBER(uint64_t, pfnTMTimerFromMilli, (PTMTIMER pTimer, uint64_t cMilliSecs));
329 DECLR3CALLBACKMEMBER(uint64_t, pfnTMTimerFromNano, (PTMTIMER pTimer, uint64_t cNanoSecs));
330 DECLR3CALLBACKMEMBER(uint64_t, pfnTMTimerGet, (PTMTIMER pTimer));
331 DECLR3CALLBACKMEMBER(uint64_t, pfnTMTimerGetFreq, (PTMTIMER pTimer));
332 DECLR3CALLBACKMEMBER(uint64_t, pfnTMTimerGetNano, (PTMTIMER pTimer));
333 DECLR3CALLBACKMEMBER(bool, pfnTMTimerIsActive, (PTMTIMER pTimer));
334 DECLR3CALLBACKMEMBER(bool, pfnTMTimerIsLockOwner, (PTMTIMER pTimer));
335 DECLR3CALLBACKMEMBER(int, pfnTMTimerLock, (PTMTIMER pTimer, int rcBusy));
336 DECLR3CALLBACKMEMBER(PTMTIMERR0, pfnTMTimerR0Ptr, (PTMTIMER pTimer));
337 DECLR3CALLBACKMEMBER(PTMTIMERRC, pfnTMTimerRCPtr, (PTMTIMER pTimer));
338 DECLR3CALLBACKMEMBER(int, pfnTMTimerSet, (PTMTIMER pTimer, uint64_t u64Expire));
339 DECLR3CALLBACKMEMBER(int, pfnTMTimerSetFrequencyHint, (PTMTIMER pTimer, uint32_t uHz));
340 DECLR3CALLBACKMEMBER(int, pfnTMTimerSetMicro, (PTMTIMER pTimer, uint64_t cMicrosToNext));
341 DECLR3CALLBACKMEMBER(int, pfnTMTimerSetMillies, (PTMTIMER pTimer, uint32_t cMilliesToNext));
342 DECLR3CALLBACKMEMBER(int, pfnTMTimerSetNano, (PTMTIMER pTimer, uint64_t cNanosToNext));
343 DECLR3CALLBACKMEMBER(int, pfnTMTimerStop, (PTMTIMER pTimer));
344 DECLR3CALLBACKMEMBER(void, pfnTMTimerUnlock, (PTMTIMER pTimer));
345 DECLR3CALLBACKMEMBER(PVMCPU, pfnVMMGetCpu, (PVM pVM));
346 DECLR3CALLBACKMEMBER(VMCPUID, pfnVMMGetCpuId, (PVM pVM));
347 DECLR3CALLBACKMEMBER(int, pfnVMMR3DeregisterPatchMemory, (PVM pVM, RTGCPTR pPatchMem, unsigned cbPatchMem));
348 DECLR3CALLBACKMEMBER(int, pfnVMMR3RegisterPatchMemory, (PVM pVM, RTGCPTR pPatchMem, unsigned cbPatchMem));
349 DECLR3CALLBACKMEMBER(RTNATIVETHREAD, pfnVMR3GetVMCPUNativeThread, (PVM pVM));
350 DECLR3CALLBACKMEMBER(int, pfnVMR3NotifyCpuDeviceReady, (PVM pVM, VMCPUID idCpu));
351 DECLR3CALLBACKMEMBER(int, pfnVMR3ReqCallNoWait, (PVM pVM, VMCPUID idDstCpu, PFNRT pfnFunction, unsigned cArgs, ...));
352 DECLR3CALLBACKMEMBER(int, pfnVMR3ReqCallVoidNoWait, (PVM pVM, VMCPUID idDstCpu, PFNRT pfnFunction, unsigned cArgs, ...));
353 DECLR3CALLBACKMEMBER(int, pfnVMR3ReqPriorityCallWait, (PVM pVM, VMCPUID idDstCpu, PFNRT pfnFunction, unsigned cArgs, ...));
354 DECLR3CALLBACKMEMBER(int, pfnVMR3WaitForDeviceReady, (PVM pVM, VMCPUID idCpu));
355} TSTDEVVMMCALLBACKS;
356
357
358extern const PDMDEVHLPR3 g_tstDevPdmDevHlpR3;
359extern const TSTDEVVMMCALLBACKS g_tstDevVmmCallbacks;
360
361RT_C_DECLS_END
362
363#endif
364
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