Lines Matching refs:pDrvIns

813  * @param   pDrvIns     The driver instance to detach.
816 int pdmR3DrvDetach(PPDMDRVINS pDrvIns, uint32_t fFlags)
818 PDMDRV_ASSERT_DRVINS(pDrvIns);
819 LogFlow(("pdmR3DrvDetach: pDrvIns=%p '%s'/%d\n", pDrvIns, pDrvIns->pReg->szName, pDrvIns->iInstance));
820 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
825 if (pDrvIns->Internal.s.fDetaching)
827 AssertMsgFailed(("Recursive detach! '%s'/%d\n", pDrvIns->pReg->szName, pDrvIns->iInstance));
835 if ( pDrvIns->Internal.s.pUp
836 ? !pDrvIns->Internal.s.pUp->pReg->pfnDetach
837 : pDrvIns->Internal.s.pLun->pDevIns
838 ? !pDrvIns->Internal.s.pLun->pDevIns->pReg->pfnDetach
839 : !pDrvIns->Internal.s.pLun->pUsbIns->pReg->pfnDriverDetach
849 pdmR3DrvDestroyChain(pDrvIns, fFlags);
859 * @param pDrvIns Pointer to the driver instance to start with.
863 void pdmR3DrvDestroyChain(PPDMDRVINS pDrvIns, uint32_t fFlags)
865 PVM pVM = pDrvIns->Internal.s.pVMR3;
869 * Detach the bottommost driver until we've detached pDrvIns.
871 pDrvIns->Internal.s.fDetaching = true;
876 pCur = pDrvIns;
980 } while (pCur != pDrvIns);
991 static DECLCALLBACK(int) pdmR3DrvHlp_Attach(PPDMDRVINS pDrvIns, uint32_t fFlags, PPDMIBASE *ppBaseInterface)
993 PDMDRV_ASSERT_DRVINS(pDrvIns);
994 PVM pVM = pDrvIns->Internal.s.pVMR3;
996 LogFlow(("pdmR3DrvHlp_Attach: caller='%s'/%d: fFlags=%#x\n", pDrvIns->pReg->szName, pDrvIns->iInstance, fFlags));
1003 if (!pDrvIns->Internal.s.pDown)
1005 Assert(pDrvIns->Internal.s.pLun->pBottom == pDrvIns);
1010 PCFGMNODE pNode = CFGMR3GetChild(pDrvIns->Internal.s.pCfgHandle, "AttachedDriver");
1012 rc = pdmR3DrvInstantiate(pVM, pNode, &pDrvIns->IBase, pDrvIns, pDrvIns->Internal.s.pLun, ppBaseInterface);
1023 pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1029 static DECLCALLBACK(int) pdmR3DrvHlp_Detach(PPDMDRVINS pDrvIns, uint32_t fFlags)
1031 PDMDRV_ASSERT_DRVINS(pDrvIns);
1033 pDrvIns->pReg->szName, pDrvIns->iInstance, fFlags));
1034 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1040 if (pDrvIns->Internal.s.pDown)
1041 rc = pdmR3DrvDetach(pDrvIns->Internal.s.pDown, fFlags);
1049 pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1055 static DECLCALLBACK(int) pdmR3DrvHlp_DetachSelf(PPDMDRVINS pDrvIns, uint32_t fFlags)
1057 PDMDRV_ASSERT_DRVINS(pDrvIns);
1059 pDrvIns->pReg->szName, pDrvIns->iInstance, fFlags));
1060 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1062 int rc = pdmR3DrvDetach(pDrvIns, fFlags);
1064 LogFlow(("pdmR3DrvHlp_Detach: returns %Rrc\n", rc)); /* pDrvIns is freed by now. */
1070 static DECLCALLBACK(int) pdmR3DrvHlp_MountPrepare(PPDMDRVINS pDrvIns, const char *pszFilename, const char *pszCoreDriver)
1072 PDMDRV_ASSERT_DRVINS(pDrvIns);
1074 pDrvIns->pReg->szName, pDrvIns->iInstance, pszFilename, pszFilename, pszCoreDriver, pszCoreDriver));
1075 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1080 if (pDrvIns->Internal.s.pDown)
1090 PCFGMNODE pNode = CFGMR3GetChild(pDrvIns->Internal.s.pCfgHandle, "AttachedDriver");
1107 int rc = CFGMR3InsertNode(pDrvIns->Internal.s.pCfgHandle, "AttachedDriver", &pNode);
1121 pDrvIns->pReg->szName, pDrvIns->iInstance, rc, pszCoreDriver));
1138 pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1144 static DECLCALLBACK(bool) pdmR3DrvHlp_AssertEMT(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction)
1146 PDMDRV_ASSERT_DRVINS(pDrvIns);
1147 if (VM_IS_EMT(pDrvIns->Internal.s.pVMR3))
1151 RTStrPrintf(szMsg, sizeof(szMsg), "AssertEMT '%s'/%d\n", pDrvIns->pReg->szName, pDrvIns->iInstance);
1154 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1160 static DECLCALLBACK(bool) pdmR3DrvHlp_AssertOther(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction)
1162 PDMDRV_ASSERT_DRVINS(pDrvIns);
1163 if (!VM_IS_EMT(pDrvIns->Internal.s.pVMR3))
1167 RTStrPrintf(szMsg, sizeof(szMsg), "AssertOther '%s'/%d\n", pDrvIns->pReg->szName, pDrvIns->iInstance);
1170 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1176 static DECLCALLBACK(int) pdmR3DrvHlp_VMSetError(PPDMDRVINS pDrvIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, ...)
1178 PDMDRV_ASSERT_DRVINS(pDrvIns);
1181 int rc2 = VMSetErrorV(pDrvIns->Internal.s.pVMR3, rc, RT_SRC_POS_ARGS, pszFormat, args); Assert(rc2 == rc); NOREF(rc2);
1188 static DECLCALLBACK(int) pdmR3DrvHlp_VMSetErrorV(PPDMDRVINS pDrvIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va)
1190 PDMDRV_ASSERT_DRVINS(pDrvIns);
1191 int rc2 = VMSetErrorV(pDrvIns->Internal.s.pVMR3, rc, RT_SRC_POS_ARGS, pszFormat, va); Assert(rc2 == rc); NOREF(rc2);
1197 static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeError(PPDMDRVINS pDrvIns, uint32_t fFlags, const char *pszErrorId, const char *pszFormat, ...)
1199 PDMDRV_ASSERT_DRVINS(pDrvIns);
1202 int rc = VMSetRuntimeErrorV(pDrvIns->Internal.s.pVMR3, fFlags, pszErrorId, pszFormat, args);
1209 static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeErrorV(PPDMDRVINS pDrvIns, uint32_t fFlags, const char *pszErrorId, const char *pszFormat, va_list va)
1211 PDMDRV_ASSERT_DRVINS(pDrvIns);
1212 int rc = VMSetRuntimeErrorV(pDrvIns->Internal.s.pVMR3, fFlags, pszErrorId, pszFormat, va);
1218 static DECLCALLBACK(VMSTATE) pdmR3DrvHlp_VMState(PPDMDRVINS pDrvIns)
1220 PDMDRV_ASSERT_DRVINS(pDrvIns);
1222 VMSTATE enmVMState = VMR3GetState(pDrvIns->Internal.s.pVMR3);
1224 LogFlow(("pdmR3DrvHlp_VMState: caller='%s'/%d: returns %d (%s)\n", pDrvIns->pReg->szName, pDrvIns->iInstance,
1231 static DECLCALLBACK(bool) pdmR3DrvHlp_VMTeleportedAndNotFullyResumedYet(PPDMDRVINS pDrvIns)
1233 PDMDRV_ASSERT_DRVINS(pDrvIns);
1235 bool fRc = VMR3TeleportedAndNotFullyResumedYet(pDrvIns->Internal.s.pVMR3);
1237 LogFlow(("pdmR3DrvHlp_VMState: caller='%s'/%d: returns %RTbool)\n", pDrvIns->pReg->szName, pDrvIns->iInstance,
1244 static DECLCALLBACK(PSUPDRVSESSION) pdmR3DrvHlp_GetSupDrvSession(PPDMDRVINS pDrvIns)
1246 PDMDRV_ASSERT_DRVINS(pDrvIns);
1248 PSUPDRVSESSION pSession = pDrvIns->Internal.s.pVMR3->pSession;
1249 LogFlow(("pdmR3DrvHlp_GetSupDrvSession: caller='%s'/%d: returns %p)\n", pDrvIns->pReg->szName, pDrvIns->iInstance,
1256 static DECLCALLBACK(int) pdmR3DrvHlp_QueueCreate(PPDMDRVINS pDrvIns, uint32_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
1259 PDMDRV_ASSERT_DRVINS(pDrvIns);
1261 pDrvIns->pReg->szName, pDrvIns->iInstance, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, pszName, ppQueue, ppQueue));
1262 PVM pVM = pDrvIns->Internal.s.pVMR3;
1265 if (pDrvIns->iInstance > 0)
1267 pszName = MMR3HeapAPrintf(pVM, MM_TAG_PDM_DRIVER_DESC, "%s_%u", pszName, pDrvIns->iInstance);
1271 int rc = PDMR3QueueCreateDriver(pVM, pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, ppQueue);
1273 LogFlow(("pdmR3DrvHlp_PDMQueueCreate: caller='%s'/%d: returns %Rrc *ppQueue=%p\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc, *ppQueue));
1279 static DECLCALLBACK(uint64_t) pdmR3DrvHlp_TMGetVirtualFreq(PPDMDRVINS pDrvIns)
1281 PDMDRV_ASSERT_DRVINS(pDrvIns);
1283 return TMVirtualGetFreq(pDrvIns->Internal.s.pVMR3);
1288 static DECLCALLBACK(uint64_t) pdmR3DrvHlp_TMGetVirtualTime(PPDMDRVINS pDrvIns)
1290 PDMDRV_ASSERT_DRVINS(pDrvIns);
1292 return TMVirtualGet(pDrvIns->Internal.s.pVMR3);
1297 static DECLCALLBACK(int) pdmR3DrvHlp_TMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer)
1299 PDMDRV_ASSERT_DRVINS(pDrvIns);
1301 pDrvIns->pReg->szName, pDrvIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, ppTimer));
1303 int rc = TMR3TimerCreateDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, ppTimer);
1305 LogFlow(("pdmR3DrvHlp_TMTimerCreate: caller='%s'/%d: returns %Rrc *ppTimer=%p\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc, *ppTimer));
1312 static DECLCALLBACK(int) pdmR3DrvHlp_SSMRegister(PPDMDRVINS pDrvIns, uint32_t uVersion, size_t cbGuess,
1317 PDMDRV_ASSERT_DRVINS(pDrvIns);
1318 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1321 pDrvIns->pReg->szName, pDrvIns->iInstance, uVersion, cbGuess,
1325 int rc = SSMR3RegisterDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, pDrvIns->pReg->szName, pDrvIns->iInstance,
1331 LogFlow(("pdmR3DrvHlp_SSMRegister: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1337 static DECLCALLBACK(int) pdmR3DrvHlp_SSMDeregister(PPDMDRVINS pDrvIns, const char *pszName, uint32_t u32Instance)
1339 PDMDRV_ASSERT_DRVINS(pDrvIns);
1340 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1342 pDrvIns->pReg->szName, pDrvIns->iInstance, pszName, pszName, u32Instance));
1344 int rc = SSMR3DeregisterDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, pszName, u32Instance);
1346 LogFlow(("pdmR3DrvHlp_SSMDeregister: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1352 static DECLCALLBACK(int) pdmR3DrvHlp_DBGFInfoRegister(PPDMDRVINS pDrvIns, const char *pszName, const char *pszDesc, PFNDBGFHANDLERDRV pfnHandler)
1354 PDMDRV_ASSERT_DRVINS(pDrvIns);
1356 pDrvIns->pReg->szName, pDrvIns->iInstance, pszName, pszName, pszDesc, pszDesc, pfnHandler));
1358 int rc = DBGFR3InfoRegisterDriver(pDrvIns->Internal.s.pVMR3, pszName, pszDesc, pfnHandler, pDrvIns);
1360 LogFlow(("pdmR3DrvHlp_DBGFInfoRegister: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1366 static DECLCALLBACK(int) pdmR3DrvHlp_DBGFInfoDeregister(PPDMDRVINS pDrvIns, const char *pszName)
1368 PDMDRV_ASSERT_DRVINS(pDrvIns);
1370 pDrvIns->pReg->szName, pDrvIns->iInstance, pszName));
1372 int rc = DBGFR3InfoDeregisterDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, pszName);
1374 LogFlow(("pdmR3DrvHlp_DBGFInfoDeregister: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1381 static DECLCALLBACK(void) pdmR3DrvHlp_STAMRegister(PPDMDRVINS pDrvIns, void *pvSample, STAMTYPE enmType, const char *pszName, STAMUNIT enmUnit, const char *pszDesc)
1383 PDMDRV_ASSERT_DRVINS(pDrvIns);
1384 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1386 STAM_REG(pDrvIns->Internal.s.pVMR3, pvSample, enmType, pszName, enmUnit, pszDesc);
1393 static DECLCALLBACK(void) pdmR3DrvHlp_STAMRegisterF(PPDMDRVINS pDrvIns, void *pvSample, STAMTYPE enmType, STAMVISIBILITY enmVisibility,
1396 PDMDRV_ASSERT_DRVINS(pDrvIns);
1397 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1401 int rc = STAMR3RegisterV(pDrvIns->Internal.s.pVMR3, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, args);
1408 static DECLCALLBACK(void) pdmR3DrvHlp_STAMRegisterV(PPDMDRVINS pDrvIns, void *pvSample, STAMTYPE enmType, STAMVISIBILITY enmVisibility,
1411 PDMDRV_ASSERT_DRVINS(pDrvIns);
1412 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1414 int rc = STAMR3RegisterV(pDrvIns->Internal.s.pVMR3, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, args);
1420 static DECLCALLBACK(int) pdmR3DrvHlp_STAMDeregister(PPDMDRVINS pDrvIns, void *pvSample)
1422 PDMDRV_ASSERT_DRVINS(pDrvIns);
1423 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1425 int rc = STAMR3DeregisterByAddr(pDrvIns->Internal.s.pVMR3->pUVM, pvSample);
1432 static DECLCALLBACK(int) pdmR3DrvHlp_SUPCallVMMR0Ex(PPDMDRVINS pDrvIns, unsigned uOperation, void *pvArg, unsigned cbArg)
1434 PDMDRV_ASSERT_DRVINS(pDrvIns);
1436 pDrvIns->pReg->szName, pDrvIns->iInstance, uOperation, pvArg, cbArg));
1440 rc = SUPR3CallVMMR0Ex(pDrvIns->Internal.s.pVMR3->pVMR0, NIL_VMCPUID, uOperation, 0, (PSUPVMMR0REQHDR)pvArg);
1447 LogFlow(("pdmR3DrvHlp_SUPCallVMMR0Ex: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1453 static DECLCALLBACK(int) pdmR3DrvHlp_USBRegisterHub(PPDMDRVINS pDrvIns, uint32_t fVersions, uint32_t cPorts, PCPDMUSBHUBREG pUsbHubReg, PPCPDMUSBHUBHLP ppUsbHubHlp)
1455 PDMDRV_ASSERT_DRVINS(pDrvIns);
1456 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1458 pDrvIns->pReg->szName, pDrvIns->iInstance, fVersions, cPorts, pUsbHubReg, ppUsbHubHlp));
1461 int rc = pdmR3UsbRegisterHub(pDrvIns->Internal.s.pVMR3, pDrvIns, fVersions, cPorts, pUsbHubReg, ppUsbHubHlp);
1466 LogFlow(("pdmR3DrvHlp_USBRegisterHub: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1472 static DECLCALLBACK(int) pdmR3DrvHlp_SetAsyncNotification(PPDMDRVINS pDrvIns, PFNPDMDRVASYNCNOTIFY pfnAsyncNotify)
1474 PDMDRV_ASSERT_DRVINS(pDrvIns);
1475 VM_ASSERT_EMT0(pDrvIns->Internal.s.pVMR3);
1476 LogFlow(("pdmR3DrvHlp_SetAsyncNotification: caller='%s'/%d: pfnAsyncNotify=%p\n", pDrvIns->pReg->szName, pDrvIns->iInstance, pfnAsyncNotify));
1480 AssertStmt(!pDrvIns->Internal.s.pfnAsyncNotify, rc = VERR_WRONG_ORDER);
1481 AssertStmt(pDrvIns->Internal.s.fVMSuspended || pDrvIns->Internal.s.fVMReset, rc = VERR_WRONG_ORDER);
1482 VMSTATE enmVMState = VMR3GetState(pDrvIns->Internal.s.pVMR3);
1493 pDrvIns->Internal.s.pfnAsyncNotify = pfnAsyncNotify;
1495 LogFlow(("pdmR3DrvHlp_SetAsyncNotification: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc));
1501 static DECLCALLBACK(void) pdmR3DrvHlp_AsyncNotificationCompleted(PPDMDRVINS pDrvIns)
1503 PDMDRV_ASSERT_DRVINS(pDrvIns);
1504 PVM pVM = pDrvIns->Internal.s.pVMR3;
1515 LogFlow(("pdmR3DrvHlp_AsyncNotificationCompleted: caller='%s'/%d:\n", pDrvIns->pReg->szName, pDrvIns->iInstance));
1519 LogFlow(("pdmR3DrvHlp_AsyncNotificationCompleted: caller='%s'/%d: enmVMState=%d\n", pDrvIns->pReg->szName, pDrvIns->iInstance, enmVMState));
1524 static DECLCALLBACK(int) pdmR3DrvHlp_ThreadCreate(PPDMDRVINS pDrvIns, PPPDMTHREAD ppThread, void *pvUser, PFNPDMTHREADDRV pfnThread,
1527 PDMDRV_ASSERT_DRVINS(pDrvIns);
1528 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1530 pDrvIns->pReg->szName, pDrvIns->iInstance, ppThread, pvUser, pfnThread, pfnWakeup, cbStack, enmType, pszName, pszName));
1532 int rc = pdmR3ThreadCreateDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, ppThread, pvUser, pfnThread, pfnWakeup, cbStack, enmType, pszName);
1534 LogFlow(("pdmR3DrvHlp_ThreadCreate: caller='%s'/%d: returns %Rrc *ppThread=%RTthrd\n", pDrvIns->pReg->szName, pDrvIns->iInstance,
1541 static DECLCALLBACK(int) pdmR3DrvHlp_AsyncCompletionTemplateCreate(PPDMDRVINS pDrvIns, PPPDMASYNCCOMPLETIONTEMPLATE ppTemplate,
1545 PDMDRV_ASSERT_DRVINS(pDrvIns);
1547 pDrvIns->pReg->szName, pDrvIns->iInstance, ppTemplate, pfnCompleted, pszDesc, pszDesc));
1549 int rc = pdmR3AsyncCompletionTemplateCreateDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, ppTemplate, pfnCompleted, pvTemplateUser, pszDesc);
1551 LogFlow(("pdmR3DrvHlp_AsyncCompletionTemplateCreate: caller='%s'/%d: returns %Rrc *ppThread=%p\n", pDrvIns->pReg->szName,
1552 pDrvIns->iInstance, rc, *ppTemplate));
1559 static DECLCALLBACK(int) pdmR3DrvHlp_NetShaperAttach(PPDMDRVINS pDrvIns, const char *pszBwGroup, PPDMNSFILTER pFilter)
1561 PDMDRV_ASSERT_DRVINS(pDrvIns);
1563 pDrvIns->pReg->szName, pDrvIns->iInstance, pFilter, pszBwGroup, pszBwGroup));
1565 int rc = PDMR3NsAttach(pDrvIns->Internal.s.pVMR3->pUVM, pDrvIns, pszBwGroup, pFilter);
1567 LogFlow(("pdmR3DrvHlp_NetShaperAttach: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1568 pDrvIns->iInstance, rc));
1574 static DECLCALLBACK(int) pdmR3DrvHlp_NetShaperDetach(PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter)
1576 PDMDRV_ASSERT_DRVINS(pDrvIns);
1578 pDrvIns->pReg->szName, pDrvIns->iInstance, pFilter));
1580 int rc = PDMR3NsDetach(pDrvIns->Internal.s.pVMR3->pUVM, pDrvIns, pFilter);
1582 LogFlow(("pdmR3DrvHlp_NetShaperDetach: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1583 pDrvIns->iInstance, rc));
1590 static DECLCALLBACK(int) pdmR3DrvHlp_LdrGetRCInterfaceSymbols(PPDMDRVINS pDrvIns, void *pvInterface, size_t cbInterface,
1593 PDMDRV_ASSERT_DRVINS(pDrvIns);
1594 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1596 pDrvIns->pReg->szName, pDrvIns->iInstance, pvInterface, cbInterface, pszSymPrefix, pszSymPrefix, pszSymList, pszSymList));
1600 && RTStrIStr(pszSymPrefix + 3, pDrvIns->pReg->szName) != NULL)
1602 if (pDrvIns->pReg->fFlags & PDM_DRVREG_FLAGS_RC)
1603 rc = PDMR3LdrGetInterfaceSymbols(pDrvIns->Internal.s.pVMR3,
1605 pDrvIns->pReg->szRCMod, pDrvIns->Internal.s.pDrv->pszRCSearchPath,
1617 pszSymPrefix, pDrvIns->pReg->szName));
1621 LogFlow(("pdmR3DrvHlp_LdrGetRCInterfaceSymbols: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1622 pDrvIns->iInstance, rc));
1628 static DECLCALLBACK(int) pdmR3DrvHlp_LdrGetR0InterfaceSymbols(PPDMDRVINS pDrvIns, void *pvInterface, size_t cbInterface,
1631 PDMDRV_ASSERT_DRVINS(pDrvIns);
1632 VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
1634 pDrvIns->pReg->szName, pDrvIns->iInstance, pvInterface, cbInterface, pszSymPrefix, pszSymPrefix, pszSymList, pszSymList));
1638 && RTStrIStr(pszSymPrefix + 3, pDrvIns->pReg->szName) != NULL)
1640 if (pDrvIns->pReg->fFlags & PDM_DRVREG_FLAGS_R0)
1641 rc = PDMR3LdrGetInterfaceSymbols(pDrvIns->Internal.s.pVMR3,
1643 pDrvIns->pReg->szR0Mod, pDrvIns->Internal.s.pDrv->pszR0SearchPath,
1655 pszSymPrefix, pDrvIns->pReg->szName));
1659 LogFlow(("pdmR3DrvHlp_LdrGetR0InterfaceSymbols: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1660 pDrvIns->iInstance, rc));
1666 static DECLCALLBACK(int) pdmR3DrvHlp_CritSectInit(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect,
1669 PDMDRV_ASSERT_DRVINS(pDrvIns);
1670 PVM pVM = pDrvIns->Internal.s.pVMR3;
1673 pDrvIns->pReg->szName, pDrvIns->iInstance, pCritSect, pszName));
1675 int rc = pdmR3CritSectInitDriver(pVM, pDrvIns, pCritSect, RT_SRC_POS_ARGS, "%s_%u", pszName, pDrvIns->iInstance);
1677 LogFlow(("pdmR3DrvHlp_CritSectInit: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1678 pDrvIns->iInstance, rc));
1684 static DECLCALLBACK(int) pdmR3DrvHlp_CallR0(PPDMDRVINS pDrvIns, uint32_t uOperation, uint64_t u64Arg)
1686 PDMDRV_ASSERT_DRVINS(pDrvIns);
1687 PVM pVM = pDrvIns->Internal.s.pVMR3;
1689 pDrvIns->pReg->szName, pDrvIns->iInstance, uOperation, u64Arg));
1695 PFNPDMDRVREQHANDLERR0 pfnReqHandlerR0 = pDrvIns->Internal.s.pfnReqHandlerR0;
1698 if (pDrvIns->pReg->fFlags & PDM_DRVREG_FLAGS_R0)
1700 char szSymbol[ sizeof("drvR0") + sizeof(pDrvIns->pReg->szName) + sizeof("ReqHandler")];
1701 strcat(strcat(strcpy(szSymbol, "drvR0"), pDrvIns->pReg->szName), "ReqHandler");
1704 rc = PDMR3LdrGetSymbolR0Lazy(pVM, pDrvIns->pReg->szR0Mod, pDrvIns->Internal.s.pDrv->pszR0SearchPath, szSymbol,
1707 pDrvIns->Internal.s.pfnReqHandlerR0 = pfnReqHandlerR0;
1722 Req.pDrvInsR0 = PDMDRVINS_2_R0PTR(pDrvIns);
1729 LogFlow(("pdmR3DrvHlp_CallR0: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName,
1730 pDrvIns->iInstance, rc));
1736 static DECLCALLBACK(int) pdmR3DrvHlp_FTSetCheckpoint(PPDMDRVINS pDrvIns, FTMCHECKPOINTTYPE enmType)
1738 PDMDRV_ASSERT_DRVINS(pDrvIns);
1739 return FTMSetCheckpoint(pDrvIns->Internal.s.pVMR3, enmType);
1744 static DECLCALLBACK(int) pdmR3DrvHlp_BlkCacheRetain(PPDMDRVINS pDrvIns, PPPDMBLKCACHE ppBlkCache,
1750 PDMDRV_ASSERT_DRVINS(pDrvIns);
1751 return PDMR3BlkCacheRetainDriver(pDrvIns->Internal.s.pVMR3, pDrvIns, ppBlkCache,
1758 static DECLCALLBACK(VMSUSPENDREASON) pdmR3DrvHlp_VMGetSuspendReason(PPDMDRVINS pDrvIns)
1760 PDMDRV_ASSERT_DRVINS(pDrvIns);
1761 PVM pVM = pDrvIns->Internal.s.pVMR3;
1765 pDrvIns->pReg->szName, pDrvIns->iInstance, enmReason));
1771 static DECLCALLBACK(VMRESUMEREASON) pdmR3DrvHlp_VMGetResumeReason(PPDMDRVINS pDrvIns)
1773 PDMDRV_ASSERT_DRVINS(pDrvIns);
1774 PVM pVM = pDrvIns->Internal.s.pVMR3;
1778 pDrvIns->pReg->szName, pDrvIns->iInstance, enmReason));