Changeset 91906 in vbox
- Timestamp:
- Oct 20, 2021 5:53:08 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/vmm/pdmdev.h (modified) (7 diffs)
-
src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp (modified) (4 diffs)
-
src/VBox/VMM/VMMR3/PDMDevHlp.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmdev.h
r91897 r91906 2424 2424 2425 2425 /** Current PDMDEVHLPR3 version number. */ 2426 #define PDM_DEVHLPR3_VERSION PDM_VERSION_MAKE_PP(0xffe7, 5 0, 1)2426 #define PDM_DEVHLPR3_VERSION PDM_VERSION_MAKE_PP(0xffe7, 51, 0) 2427 2427 2428 2428 /** … … 3708 3708 * @param pszName The queue base name. The instance number will be 3709 3709 * appended automatically. 3710 * @param ppQueue Where to store the queue pointer on success.3711 * @thread The emulation thread.3712 * @remarks The device critical section will NOT be entered before calling the3713 * callback. No locks will be held, but for now it's safe to assume3714 * that only one EMT will do queue callbacks at any one time.3715 */3716 DECLR3CALLBACKMEMBER(int, pfnQueueCreatePtr,(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,3717 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName,3718 PPDMQUEUE *ppQueue));3719 3720 /**3721 * Create a queue.3722 *3723 * @returns VBox status code.3724 * @param pDevIns The device instance.3725 * @param cbItem The size of a queue item.3726 * @param cItems The number of items in the queue.3727 * @param cMilliesInterval The number of milliseconds between polling the queue.3728 * If 0 then the emulation thread will be notified whenever an item arrives.3729 * @param pfnCallback The consumer function.3730 * @param fRZEnabled Set if the queue should work in RC and R0.3731 * @param pszName The queue base name. The instance number will be3732 * appended automatically.3733 3710 * @param phQueue Where to store the queue handle on success. 3734 3711 * @thread EMT(0) … … 3741 3718 PDMQUEUEHANDLE *phQueue)); 3742 3719 3743 DECLR3CALLBACKMEMBER(PPDMQUEUE, pfnQueueToPtr,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));3744 3720 DECLR3CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnQueueAlloc,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)); 3745 3721 DECLR3CALLBACKMEMBER(void, pfnQueueInsert,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem)); 3746 DECLR3CALLBACKMEMBER(void, pfnQueueInsertEx,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay));3747 3722 DECLR3CALLBACKMEMBER(bool, pfnQueueFlushIfNecessary,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)); 3748 3723 /** @} */ … … 5296 5271 /** @name Exported PDM Queue Functions 5297 5272 * @{ */ 5298 DECLR0CALLBACKMEMBER(PPDMQUEUE, pfnQueueToPtr,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));5299 5273 DECLR0CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnQueueAlloc,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)); 5300 5274 DECLR0CALLBACKMEMBER(void, pfnQueueInsert,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem)); 5301 DECLR0CALLBACKMEMBER(void, pfnQueueInsertEx,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay));5302 5275 DECLR0CALLBACKMEMBER(bool, pfnQueueFlushIfNecessary,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)); 5303 5276 /** @} */ … … 5522 5495 5523 5496 /** Current PDMDEVHLP version number. */ 5524 #define PDM_DEVHLPR0_VERSION PDM_VERSION_MAKE(0xffe5, 2 1, 0)5497 #define PDM_DEVHLPR0_VERSION PDM_VERSION_MAKE(0xffe5, 22, 0) 5525 5498 5526 5499 … … 7650 7623 7651 7624 /** 7652 * @copydoc PDMDEVHLPR3::pfnQueueCreate Ptr7625 * @copydoc PDMDEVHLPR3::pfnQueueCreate 7653 7626 */ 7654 7627 DECLINLINE(int) PDMDevHlpQueueCreate(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, 7655 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue) 7656 { 7657 return pDevIns->pHlpR3->pfnQueueCreatePtr(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, ppQueue); 7658 } 7659 7660 /** 7661 * @copydoc PDMDEVHLPR3::pfnQueueCreate 7662 */ 7663 DECLINLINE(int) PDMDevHlpQueueCreateNew(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, 7664 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PDMQUEUEHANDLE *phQueue) 7628 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PDMQUEUEHANDLE *phQueue) 7665 7629 { 7666 7630 return pDevIns->pHlpR3->pfnQueueCreate(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, phQueue); … … 7683 7647 { 7684 7648 pDevIns->CTX_SUFF(pHlp)->pfnQueueInsert(pDevIns, hQueue, pItem); 7685 }7686 7687 /**7688 * @copydoc PDMDEVHLPR3::pfnQueueInsertEx7689 */7690 DECLINLINE(void) PDMDevHlpQueueInsertEx(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay)7691 {7692 pDevIns->CTX_SUFF(pHlp)->pfnQueueInsertEx(pDevIns, hQueue, pItem, cNanoMaxDelay);7693 7649 } 7694 7650 -
trunk/src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp
r90997 r91906 572 572 573 573 574 /** @interface_method_impl{PDMDEVHLPR0,pfnQueueToPtr} */ 575 static DECLCALLBACK(PPDMQUEUE) pdmR0DevHlp_QueueToPtr(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue) 576 { 577 PDMDEV_ASSERT_DEVINS(pDevIns); 578 RT_NOREF(pDevIns); 574 /** Converts a queue handle to a ring-0 queue pointer. */ 575 DECLINLINE(PPDMQUEUE) pdmR0DevHlp_QueueToPtr(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue) 576 { 577 PDMDEV_ASSERT_DEVINS(pDevIns); 579 578 return (PPDMQUEUE)MMHyperR3ToCC(pDevIns->Internal.s.pGVM, hQueue); 580 579 } … … 592 591 { 593 592 return PDMQueueInsert(pdmR0DevHlp_QueueToPtr(pDevIns, hQueue), pItem); 594 }595 596 597 /** @interface_method_impl{PDMDEVHLPR0,pfnQueueInsertEx} */598 static DECLCALLBACK(void) pdmR0DevHlp_QueueInsertEx(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem,599 uint64_t cNanoMaxDelay)600 {601 return PDMQueueInsertEx(pdmR0DevHlp_QueueToPtr(pDevIns, hQueue), pItem, cNanoMaxDelay);602 593 } 603 594 … … 1371 1362 pdmR0DevHlp_TMTimeVirtGetFreq, 1372 1363 pdmR0DevHlp_TMTimeVirtGetNano, 1373 pdmR0DevHlp_QueueToPtr,1374 1364 pdmR0DevHlp_QueueAlloc, 1375 1365 pdmR0DevHlp_QueueInsert, 1376 pdmR0DevHlp_QueueInsertEx,1377 1366 pdmR0DevHlp_QueueFlushIfNecessary, 1378 1367 pdmR0DevHlp_TaskTrigger, … … 1480 1469 pdmR0DevHlp_TMTimeVirtGetFreq, 1481 1470 pdmR0DevHlp_TMTimeVirtGetNano, 1482 pdmR0DevHlp_QueueToPtr,1483 1471 pdmR0DevHlp_QueueAlloc, 1484 1472 pdmR0DevHlp_QueueInsert, 1485 pdmR0DevHlp_QueueInsertEx,1486 1473 pdmR0DevHlp_QueueFlushIfNecessary, 1487 1474 pdmR0DevHlp_TaskTrigger, -
trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
r91897 r91906 2369 2369 2370 2370 2371 /** @interface_method_impl{PDMDEVHLPR3,pfnQueueCreatePtr} */2372 static DECLCALLBACK(int) pdmR3DevHlp_QueueCreatePtr(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,2373 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue)2374 {2375 PDMDEV_ASSERT_DEVINS(pDevIns);2376 LogFlow(("pdmR3DevHlp_QueueCreatePtr: caller='%s'/%d: cbItem=%#x cItems=%#x cMilliesInterval=%u pfnCallback=%p fRZEnabled=%RTbool pszName=%p:{%s} ppQueue=%p\n",2377 pDevIns->pReg->szName, pDevIns->iInstance, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, pszName, ppQueue));2378 2379 PVM pVM = pDevIns->Internal.s.pVMR3;2380 VM_ASSERT_EMT(pVM);2381 2382 if (pDevIns->iInstance > 0)2383 {2384 pszName = MMR3HeapAPrintf(pVM, MM_TAG_PDM_DEVICE_DESC, "%s_%u", pszName, pDevIns->iInstance);2385 AssertLogRelReturn(pszName, VERR_NO_MEMORY);2386 }2387 2388 int rc = PDMR3QueueCreateDevice(pVM, pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, ppQueue);2389 2390 LogFlow(("pdmR3DevHlp_QueueCreatePtr: caller='%s'/%d: returns %Rrc *ppQueue=%p\n", pDevIns->pReg->szName, pDevIns->iInstance, rc, *ppQueue));2391 return rc;2392 }2393 2394 2395 2371 /** @interface_method_impl{PDMDEVHLPR3,pfnQueueCreate} */ 2396 2372 static DECLCALLBACK(int) pdmR3DevHlp_QueueCreate(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval, … … 2420 2396 2421 2397 2422 /** @interface_method_impl{PDMDEVHLPR3,pfnQueueToPtr} */ 2423 static DECLCALLBACK(PPDMQUEUE) pdmR3DevHlp_QueueToPtr(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue) 2398 /** 2399 * Converts a queue handle to a queue pointer. 2400 */ 2401 DECLINLINE(PPDMQUEUE) pdmR3DevHlp_QueueToPtr(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue) 2424 2402 { 2425 2403 PDMDEV_ASSERT_DEVINS(pDevIns); … … 2440 2418 { 2441 2419 return PDMQueueInsert(pdmR3DevHlp_QueueToPtr(pDevIns, hQueue), pItem); 2442 }2443 2444 2445 /** @interface_method_impl{PDMDEVHLPR3,pfnQueueInsertEx} */2446 static DECLCALLBACK(void) pdmR3DevHlp_QueueInsertEx(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem,2447 uint64_t cNanoMaxDelay)2448 {2449 return PDMQueueInsertEx(pdmR3DevHlp_QueueToPtr(pDevIns, hQueue), pItem, cNanoMaxDelay);2450 2420 } 2451 2421 … … 4570 4540 pdmR3DevHlp_DriverDetach, 4571 4541 pdmR3DevHlp_DriverReconfigure, 4572 pdmR3DevHlp_QueueCreatePtr,4573 4542 pdmR3DevHlp_QueueCreate, 4574 pdmR3DevHlp_QueueToPtr,4575 4543 pdmR3DevHlp_QueueAlloc, 4576 4544 pdmR3DevHlp_QueueInsert, 4577 pdmR3DevHlp_QueueInsertEx,4578 4545 pdmR3DevHlp_QueueFlushIfNecessary, 4579 4546 pdmR3DevHlp_TaskCreate, … … 4938 4905 pdmR3DevHlp_DriverDetach, 4939 4906 pdmR3DevHlp_DriverReconfigure, 4940 pdmR3DevHlp_QueueCreatePtr,4941 4907 pdmR3DevHlp_QueueCreate, 4942 pdmR3DevHlp_QueueToPtr,4943 4908 pdmR3DevHlp_QueueAlloc, 4944 4909 pdmR3DevHlp_QueueInsert, 4945 pdmR3DevHlp_QueueInsertEx,4946 4910 pdmR3DevHlp_QueueFlushIfNecessary, 4947 4911 pdmR3DevHlp_TaskCreate, … … 5463 5427 pdmR3DevHlp_DriverDetach, 5464 5428 pdmR3DevHlp_DriverReconfigure, 5465 pdmR3DevHlp_QueueCreatePtr,5466 5429 pdmR3DevHlp_QueueCreate, 5467 pdmR3DevHlp_QueueToPtr,5468 5430 pdmR3DevHlp_QueueAlloc, 5469 5431 pdmR3DevHlp_QueueInsert, 5470 pdmR3DevHlp_QueueInsertEx,5471 5432 pdmR3DevHlp_QueueFlushIfNecessary, 5472 5433 pdmR3DevHlp_TaskCreate,
Note:
See TracChangeset
for help on using the changeset viewer.

