Changeset 91905 in vbox
- Timestamp:
- Oct 20, 2021 5:43:26 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmdrv.h
r91903 r91905 820 820 DECLR3CALLBACKMEMBER(PSUPDRVSESSION, pfnGetSupDrvSession,(PPDMDRVINS pDrvIns)); 821 821 822 /** @name Exported PDM Queue Functions 823 * @{ */ 822 824 /** 823 825 * Create a queue. … … 832 834 * @param pszName The queue base name. The instance number will be 833 835 * appended automatically. 834 * @param p pQueue Where to store the queue handle on success.836 * @param phQueue Where to store the queue handle on success. 835 837 * @thread The emulation thread. 836 838 */ 837 839 DECLR3CALLBACKMEMBER(int, pfnQueueCreate,(PPDMDRVINS pDrvIns, uint32_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, 838 PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue)); 840 PFNPDMQUEUEDRV pfnCallback, const char *pszName, PDMQUEUEHANDLE *phQueue)); 841 842 DECLR3CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnQueueAlloc,(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue)); 843 DECLR3CALLBACKMEMBER(void, pfnQueueInsert,(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem)); 844 DECLR3CALLBACKMEMBER(bool, pfnQueueFlushIfNecessary,(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue)); 845 /** @} */ 839 846 840 847 /** … … 1447 1454 DECLR3CALLBACKMEMBER(void *, pfnQueryGenericUserObject,(PPDMDRVINS pDrvIns, PCRTUUID pUuid)); 1448 1455 1456 DECLR3CALLBACKMEMBER(void, pfnReserved0,(PPDMDRVINS pDrvIns)); 1457 DECLR3CALLBACKMEMBER(void, pfnReserved1,(PPDMDRVINS pDrvIns)); 1449 1458 DECLR3CALLBACKMEMBER(void, pfnReserved2,(PPDMDRVINS pDrvIns)); 1450 1459 DECLR3CALLBACKMEMBER(void, pfnReserved3,(PPDMDRVINS pDrvIns)); … … 1460 1469 } PDMDRVHLPR3; 1461 1470 /** Current DRVHLP version number. */ 1462 #define PDM_DRVHLPR3_VERSION PDM_VERSION_MAKE(0xf0fb, 1 0, 0)1471 #define PDM_DRVHLPR3_VERSION PDM_VERSION_MAKE(0xf0fb, 11, 0) 1463 1472 1464 1473 … … 1632 1641 */ 1633 1642 DECLINLINE(int) PDMDrvHlpQueueCreate(PPDMDRVINS pDrvIns, uint32_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, 1634 PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue) 1635 { 1636 return pDrvIns->pHlpR3->pfnQueueCreate(pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, ppQueue); 1643 PFNPDMQUEUEDRV pfnCallback, const char *pszName, PDMQUEUEHANDLE *phQueue) 1644 { 1645 return pDrvIns->pHlpR3->pfnQueueCreate(pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, phQueue); 1646 } 1647 1648 /** 1649 * @copydoc PDMDRVHLPR3::pfnQueueAlloc 1650 */ 1651 DECLINLINE(PPDMQUEUEITEMCORE) PDMDrvHlpQueueAlloc(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue) 1652 { 1653 return pDrvIns->CTX_SUFF(pHlp)->pfnQueueAlloc(pDrvIns, hQueue); 1654 } 1655 1656 /** 1657 * @copydoc PDMDRVHLPR3::pfnQueueInsert 1658 */ 1659 DECLINLINE(void) PDMDrvHlpQueueInsert(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem) 1660 { 1661 pDrvIns->CTX_SUFF(pHlp)->pfnQueueInsert(pDrvIns, hQueue, pItem); 1662 } 1663 1664 /** 1665 * @copydoc PDMDRVHLPR3::pfnQueueFlushIfNecessary 1666 */ 1667 DECLINLINE(bool) PDMDrvHlpQueueFlushIfNecessary(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue) 1668 { 1669 return pDrvIns->CTX_SUFF(pHlp)->pfnQueueFlushIfNecessary(pDrvIns, hQueue); 1637 1670 } 1638 1671 -
trunk/src/VBox/Devices/Input/DrvKeyboardQueue.cpp
r91863 r91905 66 66 PDMIKEYBOARDPORT IPort; 67 67 /** The queue handle. */ 68 P PDMQUEUE pQueue;68 PDMQUEUEHANDLE hQueue; 69 69 /** State of the scancode translation. */ 70 70 scan_state_t XlatState; … … 232 232 if (pDrv->XlatState == SS_IDLE) 233 233 { 234 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);234 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 235 235 if (pItem) 236 236 { … … 243 243 || (idUsage == (PDMIKBDPORT_KEY_UP | HID_PG_KB_BITS | 0x91))) 244 244 { 245 PDRVKBDQUEUEITEM pItem2 = (PDRVKBDQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);245 PDRVKBDQUEUEITEM pItem2 = (PDRVKBDQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 246 246 /* 247 247 * NB: If there's no room in the queue, we will drop the faked … … 252 252 /* Manufacture a key down event. */ 253 253 pItem2->idUsage = idUsage & ~PDMIKBDPORT_KEY_UP; 254 PDM QueueInsert(pDrv->pQueue, &pItem2->Core);254 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem2->Core); 255 255 } 256 256 } 257 257 258 258 pItem->idUsage = idUsage; 259 PDM QueueInsert(pDrv->pQueue, &pItem->Core);259 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem->Core); 260 260 261 261 return VINF_SUCCESS; … … 265 265 return VERR_PDM_NO_QUEUE_ITEMS; 266 266 } 267 else 268 return VINF_SUCCESS; 267 return VINF_SUCCESS; 269 268 } 270 269 … … 283 282 return VINF_SUCCESS; 284 283 285 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);284 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 286 285 if (pItem) 287 286 { 288 287 pItem->idUsage = idUsage; 289 PDM QueueInsert(pDrv->pQueue, &pItem->Core);288 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem->Core); 290 289 291 290 return VINF_SUCCESS; 292 291 } 293 if (!pDrv->fSuspended) 294 AssertMsgFailed(("drvKbdQueuePutEventHid: Queue is full!!!!\n")); 292 AssertMsg(pDrv->fSuspended, ("drvKbdQueuePutEventHid: Queue is full!!!!\n")); 295 293 return VERR_PDM_NO_QUEUE_ITEMS; 296 294 } … … 311 309 return VINF_SUCCESS; 312 310 313 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);311 PDRVKBDQUEUEITEM pItem = (PDRVKBDQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 314 312 if (pItem) 315 313 { … … 319 317 */ 320 318 pItem->idUsage = PDMIKBDPORT_RELEASE_KEYS | HID_PG_KB_BITS; 321 PDM QueueInsert(pDrv->pQueue, &pItem->Core);319 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem->Core); 322 320 323 321 return VINF_SUCCESS; 324 322 } 325 if (!pDrv->fSuspended) 326 AssertMsgFailed(("drvKbdQueueReleaseKeys: Queue is full!!!!\n")); 323 AssertMsg(pDrv->fSuspended, ("drvKbdQueueReleaseKeys: Queue is full!!!!\n")); 327 324 return VERR_PDM_NO_QUEUE_ITEMS; 328 325 } … … 369 366 PDRVKBDQUEUE pDrv = PPDMIKEYBOARDCONNECTOR_2_DRVKBDQUEUE(pInterface); 370 367 371 AssertPtr(pDrv->pQueue); 372 PDMQueueFlushIfNecessary(pDrv->pQueue); 368 PDMDrvHlpQueueFlushIfNecessary(pDrv->pDrvIns, pDrv->hQueue); 373 369 } 374 370 … … 483 479 * Init basic data members and interfaces. 484 480 */ 481 pDrv->pDrvIns = pDrvIns; 485 482 pDrv->fInactive = true; 486 483 pDrv->fSuspended = false; … … 501 498 */ 502 499 pDrv->pUpPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMIKEYBOARDPORT); 503 if (!pDrv->pUpPort) 504 { 505 AssertMsgFailed(("Configuration error: No keyboard port interface above!\n")); 506 return VERR_PDM_MISSING_INTERFACE_ABOVE; 507 } 500 AssertMsgReturn(pDrv->pUpPort, ("Configuration error: No keyboard port interface above!\n"), VERR_PDM_MISSING_INTERFACE_ABOVE); 508 501 509 502 /* … … 512 505 PPDMIBASE pDownBase; 513 506 int rc = PDMDrvHlpAttach(pDrvIns, fFlags, &pDownBase); 514 if (RT_FAILURE(rc)) 515 { 516 AssertMsgFailed(("Failed to attach driver below us! rc=%Rra\n", rc)); 517 return rc; 518 } 507 AssertMsgRCReturn(rc, ("Failed to attach driver below us! rc=%Rra\n", rc), rc); 508 519 509 pDrv->pDownConnector = PDMIBASE_QUERY_INTERFACE(pDownBase, PDMIKEYBOARDCONNECTOR); 520 if (!pDrv->pDownConnector) 521 { 522 AssertMsgFailed(("Configuration error: No keyboard connector interface below!\n")); 523 return VERR_PDM_MISSING_INTERFACE_BELOW; 524 } 510 AssertMsgReturn(pDrv->pDownConnector, ("Configuration error: No keyboard connector interface below!\n"), 511 VERR_PDM_MISSING_INTERFACE_BELOW); 525 512 526 513 /* … … 531 518 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 532 519 cMilliesInterval = 0; 533 else if (RT_FAILURE(rc)) 534 { 535 AssertMsgFailed(("Configuration error: 32-bit \"Interval\" -> rc=%Rrc\n", rc)); 536 return rc; 537 } 520 else 521 AssertMsgRCReturn(rc, ("Configuration error: 32-bit \"Interval\" -> rc=%Rrc\n", rc), rc); 538 522 539 523 uint32_t cItems = 0; … … 541 525 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 542 526 cItems = 128; 543 else if (RT_FAILURE(rc)) 544 { 545 AssertMsgFailed(("Configuration error: 32-bit \"QueueSize\" -> rc=%Rrc\n", rc)); 546 return rc; 547 } 527 else 528 AssertMsgRCReturn(rc, ("Configuration error: 32-bit \"QueueSize\" -> rc=%Rrc\n", rc), rc); 548 529 549 530 rc = PDMDrvHlpQueueCreate(pDrvIns, sizeof(DRVKBDQUEUEITEM), cItems, cMilliesInterval, 550 drvKbdQueueConsumer, "Keyboard", &pDrv->pQueue); 551 if (RT_FAILURE(rc)) 552 { 553 AssertMsgFailed(("Failed to create driver: cItems=%d cMilliesInterval=%d rc=%Rrc\n", cItems, cMilliesInterval, rc)); 554 return rc; 555 } 531 drvKbdQueueConsumer, "Keyboard", &pDrv->hQueue); 532 AssertMsgRCReturn(rc, ("Failed to create driver: cItems=%d cMilliesInterval=%d rc=%Rrc\n", cItems, cMilliesInterval, rc), rc); 556 533 557 534 return VINF_SUCCESS; -
trunk/src/VBox/Devices/Input/DrvMouseQueue.cpp
r91863 r91905 51 51 PDMIMOUSEPORT IPort; 52 52 /** The queue handle. */ 53 P PDMQUEUE pQueue;53 PDMQUEUEHANDLE hQueue; 54 54 /** Discard input when this flag is set. 55 55 * We only accept input when the VM is running. */ … … 129 129 return VINF_SUCCESS; 130 130 131 PDRVMOUSEQUEUEITEM pItem = (PDRVMOUSEQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);131 PDRVMOUSEQUEUEITEM pItem = (PDRVMOUSEQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 132 132 if (pItem) 133 133 { … … 139 139 pItem->u.Relative.dw = dw; 140 140 pItem->u.Relative.fButtons = fButtons; 141 PDM QueueInsert(pDrv->pQueue, &pItem->Core);141 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem->Core); 142 142 return VINF_SUCCESS; 143 143 } … … 157 157 return VINF_SUCCESS; 158 158 159 PDRVMOUSEQUEUEITEM pItem = (PDRVMOUSEQUEUEITEM)PDM QueueAlloc(pDrv->pQueue);159 PDRVMOUSEQUEUEITEM pItem = (PDRVMOUSEQUEUEITEM)PDMDrvHlpQueueAlloc(pDrv->pDrvIns, pDrv->hQueue); 160 160 if (pItem) 161 161 { … … 167 167 pItem->u.Absolute.dw = dw; 168 168 pItem->u.Absolute.fButtons = fButtons; 169 PDM QueueInsert(pDrv->pQueue, &pItem->Core);169 PDMDrvHlpQueueInsert(pDrv->pDrvIns, pDrv->hQueue, &pItem->Core); 170 170 return VINF_SUCCESS; 171 171 } … … 213 213 PDRVMOUSEQUEUE pDrv = PPDMIMOUSECONNECTOR_2_DRVMOUSEQUEUE(pInterface); 214 214 215 AssertPtr(pDrv->pQueue); 216 PDMQueueFlushIfNecessary(pDrv->pQueue); 215 PDMDrvHlpQueueFlushIfNecessary(pDrv->pDrvIns, pDrv->hQueue); 217 216 } 218 217 … … 342 341 * Init basic data members and interfaces. 343 342 */ 343 pDrv->pDrvIns = pDrvIns; 344 344 pDrv->fInactive = true; 345 345 /* IBase. */ … … 357 357 */ 358 358 pDrv->pUpPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMIMOUSEPORT); 359 if (!pDrv->pUpPort) 360 { 361 AssertMsgFailed(("Configuration error: No mouse port interface above!\n")); 362 return VERR_PDM_MISSING_INTERFACE_ABOVE; 363 } 359 AssertMsgReturn(pDrv->pUpPort, ("Configuration error: No mouse port interface above!\n"), VERR_PDM_MISSING_INTERFACE_ABOVE); 364 360 365 361 /* … … 368 364 PPDMIBASE pDownBase; 369 365 int rc = PDMDrvHlpAttach(pDrvIns, fFlags, &pDownBase); 370 if (RT_FAILURE(rc)) 371 { 372 AssertMsgFailed(("Failed to attach driver below us! rc=%Rra\n", rc)); 373 return rc; 374 } 366 AssertMsgRCReturn(rc, ("Failed to attach driver below us! rc=%Rra\n", rc), rc); 367 375 368 pDrv->pDownConnector = PDMIBASE_QUERY_INTERFACE(pDownBase, PDMIMOUSECONNECTOR); 376 if (!pDrv->pDownConnector) 377 { 378 AssertMsgFailed(("Configuration error: No mouse connector interface below!\n")); 379 return VERR_PDM_MISSING_INTERFACE_BELOW; 380 } 369 AssertMsgReturn(pDrv->pDownConnector, ("Configuration error: No mouse connector interface below!\n"), 370 VERR_PDM_MISSING_INTERFACE_BELOW); 381 371 382 372 /* … … 387 377 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 388 378 cMilliesInterval = 0; 389 else if (RT_FAILURE(rc)) 390 { 391 AssertMsgFailed(("Configuration error: 32-bit \"Interval\" -> rc=%Rrc\n", rc)); 392 return rc; 393 } 379 else 380 AssertMsgRCReturn(rc, ("Configuration error: 32-bit \"Interval\" -> rc=%Rrc\n", rc), rc); 394 381 395 382 uint32_t cItems = 0; … … 397 384 if (rc == VERR_CFGM_VALUE_NOT_FOUND) 398 385 cItems = 128; 399 else if (RT_FAILURE(rc)) 400 { 401 AssertMsgFailed(("Configuration error: 32-bit \"QueueSize\" -> rc=%Rrc\n", rc)); 402 return rc; 403 } 386 else 387 AssertMsgRCReturn(rc, ("Configuration error: 32-bit \"QueueSize\" -> rc=%Rrc\n", rc), rc); 404 388 405 389 rc = PDMDrvHlpQueueCreate(pDrvIns, sizeof(DRVMOUSEQUEUEITEM), cItems, cMilliesInterval, 406 drvMouseQueueConsumer, "Mouse", &pDrv->pQueue); 407 if (RT_FAILURE(rc)) 408 { 409 AssertMsgFailed(("Failed to create driver: cItems=%d cMilliesInterval=%d rc=%Rrc\n", cItems, cMilliesInterval, rc)); 410 return rc; 411 } 390 drvMouseQueueConsumer, "Mouse", &pDrv->hQueue); 391 AssertMsgRCReturn(rc, ("Failed to create driver: cItems=%d cMilliesInterval=%d rc=%Rrc\n", cItems, cMilliesInterval, rc), rc); 412 392 413 393 return VINF_SUCCESS; -
trunk/src/VBox/Devices/Storage/DrvSCSI.cpp
r91875 r91905 147 147 size_t cbVScsiIoReqAlloc; 148 148 /** Queue to defer unmounting to EMT. */ 149 P PDMQUEUE pQueue;149 PDMQUEUEHANDLE hQueue; 150 150 } DRVSCSI, *PDRVSCSI; 151 151 … … 314 314 if (RT_SUCCESS(rc)) 315 315 { 316 PDRVSCSIEJECTSTATE pEjectState = (PDRVSCSIEJECTSTATE)PDM QueueAlloc(pThis->pQueue);316 PDRVSCSIEJECTSTATE pEjectState = (PDRVSCSIEJECTSTATE)PDMDrvHlpQueueAlloc(pThis->pDrvIns, pThis->hQueue); 317 317 if (pEjectState) 318 318 { 319 319 pEjectState->hSemEvt = hSemEvt; 320 PDM QueueInsert(pThis->pQueue, &pEjectState->Core);320 PDMDrvHlpQueueInsert(pThis->pDrvIns, pThis->hQueue, &pEjectState->Core); 321 321 322 322 /* Wait for completion. */ … … 1067 1067 * @param pDrvIns The driver instance. 1068 1068 * @param pItem The item to consume. Upon return this item will be freed. 1069 * @thread EMT 1070 * 1071 * @todo r=bird: Seems the idea here is that we have to do this on an EMT, 1072 * probably because of PDMIMOUNT::pfnUnmount. I don't quite get why 1073 * though, as EMT doesn't exactly serialize anything anymore (SMP)... 1069 1074 */ 1070 1075 static DECLCALLBACK(bool) drvscsiR3NotifyQueueConsumer(PPDMDRVINS pDrvIns, PPDMQUEUEITEMCORE pItem) … … 1073 1078 PDRVSCSI pThis = PDMINS_2_DATA(pDrvIns, PDRVSCSI); 1074 1079 1075 int rc = pThis->pDrvMount->pfnUnmount(pThis->pDrvMount, false /*=fForce*/, true/*=fEject*/);1080 int rc = pThis->pDrvMount->pfnUnmount(pThis->pDrvMount, false /*fForce*/, true /*fEject*/); 1076 1081 Assert(RT_SUCCESS(rc) || rc == VERR_PDM_MEDIA_LOCKED || rc == VERR_PDM_MEDIA_NOT_MOUNTED); 1077 1082 if (RT_SUCCESS(rc)) … … 1509 1514 1510 1515 rc = PDMDrvHlpQueueCreate(pDrvIns, sizeof(DRVSCSIEJECTSTATE), 1, 0, drvscsiR3NotifyQueueConsumer, 1511 "SCSI-Eject", &pThis-> pQueue);1516 "SCSI-Eject", &pThis->hQueue); 1512 1517 if (RT_FAILURE(rc)) 1513 1518 return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, -
trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp
r91899 r91905 1253 1253 1254 1254 1255 /** 1256 * Conversion from handle to queue pointer (temporary). 1257 */ 1258 DECLINLINE(PPDMQUEUE) pdmR3DrvHlp_QueueToPtr(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue) 1259 { 1260 PDMDRV_ASSERT_DRVINS(pDrvIns); 1261 RT_NOREF(pDrvIns); 1262 return (PPDMQUEUE)hQueue; 1263 } 1264 1265 1255 1266 /** @interface_method_impl{PDMDRVHLPR3,pfnQueueCreate} */ 1256 1267 static DECLCALLBACK(int) pdmR3DrvHlp_QueueCreate(PPDMDRVINS pDrvIns, uint32_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, 1257 PFNPDMQUEUEDRV pfnCallback, const char *pszName, P PDMQUEUE *ppQueue)1258 { 1259 PDMDRV_ASSERT_DRVINS(pDrvIns); 1260 LogFlow(("pdmR3DrvHlp_PDMQueueCreate: caller='%s'/%d: cbItem=%d cItems=%d cMilliesInterval=%d pfnCallback=%p pszName=%p:{%s} p pQueue=%p\n",1261 pDrvIns->pReg->szName, pDrvIns->iInstance, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, pszName, p pQueue));1268 PFNPDMQUEUEDRV pfnCallback, const char *pszName, PDMQUEUEHANDLE *phQueue) 1269 { 1270 PDMDRV_ASSERT_DRVINS(pDrvIns); 1271 LogFlow(("pdmR3DrvHlp_PDMQueueCreate: caller='%s'/%d: cbItem=%d cItems=%d cMilliesInterval=%d pfnCallback=%p pszName=%p:{%s} phQueue=%p\n", 1272 pDrvIns->pReg->szName, pDrvIns->iInstance, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, pszName, phQueue)); 1262 1273 PVM pVM = pDrvIns->Internal.s.pVMR3; 1263 1274 VM_ASSERT_EMT(pVM); … … 1269 1280 } 1270 1281 1271 int rc = PDMR3QueueCreateDriver(pVM, pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, ppQueue); 1272 1273 LogFlow(("pdmR3DrvHlp_PDMQueueCreate: caller='%s'/%d: returns %Rrc *ppQueue=%p\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc, *ppQueue)); 1274 return rc; 1275 } 1282 PPDMQUEUE pQueue = NULL; 1283 int rc = PDMR3QueueCreateDriver(pVM, pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, &pQueue); 1284 *phQueue = (PDMQUEUEHANDLE)pQueue; 1285 1286 LogFlow(("pdmR3DrvHlp_PDMQueueCreate: caller='%s'/%d: returns %Rrc *phQueue=%p\n", pDrvIns->pReg->szName, pDrvIns->iInstance, rc, *phQueue)); 1287 return rc; 1288 } 1289 1290 1291 /** @interface_method_impl{PDMDRVHLPR3,pfnQueueAlloc} */ 1292 static DECLCALLBACK(PPDMQUEUEITEMCORE) pdmR3DrvHlp_QueueAlloc(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue) 1293 { 1294 return PDMQueueAlloc(pdmR3DrvHlp_QueueToPtr(pDrvIns, hQueue)); 1295 } 1296 1297 1298 /** @interface_method_impl{PDMDRVHLPR3,pfnQueueInsert} */ 1299 static DECLCALLBACK(void) pdmR3DrvHlp_QueueInsert(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem) 1300 { 1301 return PDMQueueInsert(pdmR3DrvHlp_QueueToPtr(pDrvIns, hQueue), pItem); 1302 } 1303 1304 1305 /** @interface_method_impl{PDMDRVHLPR3,pfnQueueFlushIfNecessary} */ 1306 static DECLCALLBACK(bool) pdmR3DrvHlp_QueueFlushIfNecessary(PPDMDRVINS pDrvIns, PDMQUEUEHANDLE hQueue) 1307 { 1308 return PDMQueueFlushIfNecessary(pdmR3DrvHlp_QueueToPtr(pDrvIns, hQueue)); 1309 } 1310 1276 1311 1277 1312 … … 2032 2067 pdmR3DrvHlp_GetSupDrvSession, 2033 2068 pdmR3DrvHlp_QueueCreate, 2069 pdmR3DrvHlp_QueueAlloc, 2070 pdmR3DrvHlp_QueueInsert, 2071 pdmR3DrvHlp_QueueFlushIfNecessary, 2034 2072 pdmR3DrvHlp_TMGetVirtualFreq, 2035 2073 pdmR3DrvHlp_TMGetVirtualTime, … … 2224 2262 NULL, 2225 2263 NULL, 2264 NULL, 2265 NULL, 2226 2266 PDM_DRVHLPR3_VERSION /* u32TheEnd */ 2227 2267 };
Note:
See TracChangeset
for help on using the changeset viewer.