Changeset 87773 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Feb 16, 2021 11:36:15 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142829
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/CPUM.cpp
r87766 r87773 4510 4510 { 4511 4511 PVMCPU pVCpu = pVM->apCpusR3[idCpu]; 4512 /* The string cannot live on the stack. It should be safe to call MMR3HeapAPrintf here as 4513 MMR3HyperInitFinalize has already completed at this point. */ 4514 char *pszTimerName = MMR3HeapAPrintf(pVM, MM_TAG_CPUM_CTX, "Nested Guest VMX-preempt. timer %u", idCpu); 4512 char szName[32]; 4513 RTStrPrintf(szName, sizeof(szName), "Nested VMX-preemption %u", idCpu); 4515 4514 int rc = TMR3TimerCreate(pVM, TMCLOCK_VIRTUAL_SYNC, cpumR3VmxPreemptTimerCallback, pVCpu, 4516 TMTIMER_FLAGS_RING0, pszTimerName, &pVCpu->cpum.s.hNestedVmxPreemptTimer);4515 TMTIMER_FLAGS_RING0, szName, &pVCpu->cpum.s.hNestedVmxPreemptTimer); 4517 4516 AssertLogRelRCReturn(rc, rc); 4518 4517 } -
trunk/src/VBox/VMM/VMMR3/GIMHv.cpp
r87766 r87773 518 518 519 519 /* Create the timer and associate the context pointers. */ 520 RTStrPrintf(&pHvStimer->szTimerDesc[0], sizeof(pHvStimer->szTimerDesc), "Hyper-V[%u] Timer%u", pVCpu->idCpu,521 520 char szName[32]; 521 RTStrPrintf(szName, sizeof(szName), "Hyper-V[%u] Timer%u", pVCpu->idCpu, idxStimer); 522 522 rc = TMR3TimerCreate(pVM, TMCLOCK_VIRTUAL_SYNC, gimR3HvTimerCallback, pHvStimer /* pvUser */, 523 TMTIMER_FLAGS_RING0, pHvStimer->szTimerDesc, &pHvStimer->hTimer);523 TMTIMER_FLAGS_RING0, szName, &pHvStimer->hTimer); 524 524 AssertLogRelRCReturn(rc, rc); 525 525 } -
trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
r87766 r87773 422 422 pDevIns->pReg->szName, pDevIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, phTimer)); 423 423 424 if (pDevIns->iInstance > 0) /** @todo use a string cache here later. */ 425 { 426 char *pszDesc2 = MMR3HeapAPrintf(pVM, MM_TAG_PDM_DEVICE_DESC, "%s[%u]", pszDesc, pDevIns->iInstance); 427 if (pszDesc2) 428 pszDesc = pszDesc2; 424 /* Mangle the timer name if there are more than one instance of this device. */ 425 char szName[32]; 426 AssertReturn(strlen(pszDesc) < sizeof(szName) - 3, VERR_INVALID_NAME); 427 if (pDevIns->iInstance > 0) 428 { 429 RTStrPrintf(szName, sizeof(szName), "%s[%u]", pszDesc, pDevIns->iInstance); 430 pszDesc = szName; 429 431 } 430 432 -
trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp
r87772 r87773 1325 1325 LogFlow(("pdmR3DrvHlp_TimerCreate: caller='%s'/%d: enmClock=%d pfnCallback=%p pvUser=%p fFlags=%#x pszDesc=%p:{%s} phTimer=%p\n", 1326 1326 pDrvIns->pReg->szName, pDrvIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, phTimer)); 1327 1328 /* Mangle the timer name if there are more than once instance of this driver. */ 1329 char szName[32]; 1330 AssertReturn(strlen(pszDesc) < sizeof(szName) - 3, VERR_INVALID_NAME); 1331 if (pDrvIns->iInstance > 0) 1332 { 1333 RTStrPrintf(szName, sizeof(szName), "%s[%u]", pszDesc, pDrvIns->iInstance); 1334 pszDesc = szName; 1335 } 1327 1336 1328 1337 /* Clear the ring-0 flag if the driver isn't configured for ring-0. */ -
trunk/src/VBox/VMM/VMMR3/PDMQueue.cpp
r87766 r87773 113 113 if (cMilliesInterval) 114 114 { 115 rc = TMR3TimerCreate(pVM, TMCLOCK_REAL, pdmR3QueueTimer, pQueue, TMTIMER_FLAGS_NO_RING0, "Queue timer", &pQueue->hTimer); 115 char szName[32]; 116 RTStrPrintf(szName, sizeof(szName), "Queue %s", pQueue->pszName); 117 rc = TMR3TimerCreate(pVM, TMCLOCK_REAL, pdmR3QueueTimer, pQueue, TMTIMER_FLAGS_NO_RING0, szName, &pQueue->hTimer); 116 118 if (RT_SUCCESS(rc)) 117 119 { -
trunk/src/VBox/VMM/VMMR3/PDMUsb.cpp
r87766 r87773 1828 1828 fFlags |= TMTIMER_FLAGS_NO_RING0; 1829 1829 1830 /** @todo use a string cache here later. */ 1831 char *pszDesc2 = MMR3HeapAPrintf(pVM, MM_TAG_PDM_USB_DESC, "%s[%s:%u]", pszDesc, pUsbIns->Internal.s.pUsbDev->pReg->szName, pUsbIns->iInstance); 1832 if (pszDesc2) 1833 pszDesc = pszDesc2; 1830 /* Mangle the timer name if there are more than one instance of this device. */ 1831 char szName[32]; 1832 AssertReturn(strlen(pszDesc) < sizeof(szName) - 8, VERR_INVALID_NAME); 1833 if (pUsbIns->iInstance > 0) 1834 { 1835 RTStrPrintf(szName, sizeof(szName), "%s[%u:%s]", pszDesc, pUsbIns->iInstance, pUsbIns->Internal.s.pUsbDev->pReg->szName); 1836 pszDesc = szName; 1837 } 1834 1838 1835 1839 int rc = TMR3TimerCreateUsb(pVM, pUsbIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, phTimer); -
trunk/src/VBox/VMM/VMMR3/TM.cpp
r87771 r87773 1500 1500 * @param enmClock The timer clock. 1501 1501 * @param fFlags TMTIMER_FLAGS_XXX. 1502 * @param psz Desc The timer description.1502 * @param pszName The timer name. 1503 1503 * @param ppTimer Where to store the timer pointer on success. 1504 1504 */ 1505 static int tmr3TimerCreate(PVM pVM, TMCLOCK enmClock, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer) 1506 { 1505 static int tmr3TimerCreate(PVM pVM, TMCLOCK enmClock, uint32_t fFlags, const char *pszName, PPTMTIMERR3 ppTimer) 1506 { 1507 PTMTIMERR3 pTimer; 1508 1509 /* 1510 * Validate input. 1511 */ 1507 1512 VM_ASSERT_EMT(pVM); 1508 1513 AssertReturn((fFlags & (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)) != (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0), 1509 1514 VERR_INVALID_FLAGS); 1515 AssertPtrReturn(pszName, VERR_INVALID_POINTER); 1516 size_t const cchName = strlen(pszName); 1517 AssertMsgReturn(cchName < sizeof(pTimer->szName), ("timer name too long: %s\n", pszName), VERR_INVALID_NAME); 1518 AssertMsgReturn(cchName > 2, ("Too short timer name: %s\n", pszName), VERR_INVALID_NAME); 1510 1519 1511 1520 /* 1512 1521 * Allocate the timer. 1513 1522 */ 1514 PTMTIMERR3 pTimer = NULL;1515 1523 if (pVM->tm.s.pFree && VM_IS_EMT(pVM)) 1516 1524 { … … 1519 1527 Log3(("TM: Recycling timer %p, new free head %p.\n", pTimer, pTimer->pBigNext)); 1520 1528 } 1529 else 1530 pTimer = NULL; 1521 1531 1522 1532 if (!pTimer) … … 1542 1552 pTimer->pvUser = NULL; 1543 1553 pTimer->pCritSect = NULL; 1544 pTimer->pszDesc = pszDesc; 1554 memcpy(pTimer->szName, pszName, cchName); 1555 pTimer->szName[cchName] = '\0'; 1545 1556 1546 1557 /* insert into the list of created timers. */ … … 1556 1567 TM_UNLOCK_TIMERS(pVM); 1557 1568 1569 #ifdef VBOX_WITH_STATISTICS 1558 1570 /* 1559 1571 * Register statistics. 1560 1572 */ 1561 #ifdef VBOX_WITH_STATISTICS1562 1563 1573 STAMR3RegisterF(pVM, &pTimer->StatTimer, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, 1564 tmR3TimerClockName(pTimer), "/TM/Timers/%s", p szDesc);1574 tmR3TimerClockName(pTimer), "/TM/Timers/%s", pTimer->szName); 1565 1575 STAMR3RegisterF(pVM, &pTimer->StatCritSectEnter, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, 1566 "", "/TM/Timers/%s/CritSectEnter", p szDesc);1576 "", "/TM/Timers/%s/CritSectEnter", pTimer->szName); 1567 1577 STAMR3RegisterF(pVM, &pTimer->StatGet, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS, 1568 "", "/TM/Timers/%s/Get", p szDesc);1578 "", "/TM/Timers/%s/Get", pTimer->szName); 1569 1579 STAMR3RegisterF(pVM, &pTimer->StatSetAbsolute, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS, 1570 "", "/TM/Timers/%s/SetAbsolute", p szDesc);1580 "", "/TM/Timers/%s/SetAbsolute", pTimer->szName); 1571 1581 STAMR3RegisterF(pVM, &pTimer->StatSetRelative, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS, 1572 "", "/TM/Timers/%s/SetRelative", p szDesc);1582 "", "/TM/Timers/%s/SetRelative", pTimer->szName); 1573 1583 STAMR3RegisterF(pVM, &pTimer->StatStop, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_CALLS, 1574 "", "/TM/Timers/%s/Stop", p szDesc);1584 "", "/TM/Timers/%s/Stop", pTimer->szName); 1575 1585 #endif 1576 1586 … … 1590 1600 * @param pvUser The user argument to the callback. 1591 1601 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 1592 * @param pszDesc Pointer to description string which must stay around 1593 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). 1602 * @param pszName Timer name (will be copied). Max 31 chars. 1594 1603 * @param phTimer Where to store the timer handle on success. 1595 1604 */ 1596 1605 VMM_INT_DECL(int) TMR3TimerCreateDevice(PVM pVM, PPDMDEVINS pDevIns, TMCLOCK enmClock, 1597 1606 PFNTMTIMERDEV pfnCallback, void *pvUser, 1598 uint32_t fFlags, const char *psz Desc, PTMTIMERHANDLE phTimer)1607 uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer) 1599 1608 { 1600 1609 AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)), … … 1605 1614 */ 1606 1615 PTMTIMER pTimer; 1607 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, psz Desc, &pTimer);1616 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer); 1608 1617 if (RT_SUCCESS(rc)) 1609 1618 { … … 1615 1624 pTimer->pCritSect = PDMR3DevGetCritSect(pVM, pDevIns); 1616 1625 *phTimer = pTimer->hSelf; 1617 Log(("TM: Created device timer %p clock %d callback %p '%s'\n", phTimer, enmClock, pfnCallback, psz Desc));1626 Log(("TM: Created device timer %p clock %d callback %p '%s'\n", phTimer, enmClock, pfnCallback, pszName)); 1618 1627 } 1619 1628 … … 1634 1643 * @param pvUser The user argument to the callback. 1635 1644 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 1636 * @param pszDesc Pointer to description string which must stay around 1637 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). 1645 * @param pszName Timer name (will be copied). Max 31 chars. 1638 1646 * @param phTimer Where to store the timer handle on success. 1639 1647 */ 1640 1648 VMM_INT_DECL(int) TMR3TimerCreateUsb(PVM pVM, PPDMUSBINS pUsbIns, TMCLOCK enmClock, 1641 1649 PFNTMTIMERUSB pfnCallback, void *pvUser, 1642 uint32_t fFlags, const char *psz Desc, PTMTIMERHANDLE phTimer)1650 uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer) 1643 1651 { 1644 1652 AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_NO_RING0)), VERR_INVALID_PARAMETER); … … 1648 1656 */ 1649 1657 PTMTIMER pTimer; 1650 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, psz Desc, &pTimer);1658 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer); 1651 1659 if (RT_SUCCESS(rc)) 1652 1660 { … … 1663 1671 //} 1664 1672 *phTimer = pTimer->hSelf; 1665 Log(("TM: Created USB device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, psz Desc));1673 Log(("TM: Created USB device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszName)); 1666 1674 } 1667 1675 … … 1680 1688 * @param pvUser The user argument to the callback. 1681 1689 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 1682 * @param pszDesc Pointer to description string which must stay around 1683 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). 1690 * @param pszName Timer name (will be copied). Max 31 chars. 1684 1691 * @param phTimer Where to store the timer handle on success. 1685 1692 */ 1686 1693 VMM_INT_DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, 1687 uint32_t fFlags, const char *psz Desc, PTMTIMERHANDLE phTimer)1694 uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer) 1688 1695 { 1689 1696 AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT | TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0)), … … 1694 1701 */ 1695 1702 PTMTIMER pTimer; 1696 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, psz Desc, &pTimer);1703 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer); 1697 1704 if (RT_SUCCESS(rc)) 1698 1705 { … … 1702 1709 pTimer->pvUser = pvUser; 1703 1710 *phTimer = pTimer->hSelf; 1704 Log(("TM: Created device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, psz Desc));1711 Log(("TM: Created device timer %p clock %d callback %p '%s'\n", *phTimer, enmClock, pfnCallback, pszName)); 1705 1712 } 1706 1713 … … 1718 1725 * @param pvUser User argument to be passed to the callback. 1719 1726 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 1720 * @param pszDesc Pointer to description string which must stay around 1721 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). 1727 * @param pszName Timer name (will be copied). Max 31 chars. 1722 1728 * @param phTimer Where to store the timer handle on success. 1723 1729 */ 1724 1730 VMMR3DECL(int) TMR3TimerCreate(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser, 1725 uint32_t fFlags, const char *psz Desc, PTMTIMERHANDLE phTimer)1731 uint32_t fFlags, const char *pszName, PTMTIMERHANDLE phTimer) 1726 1732 { 1727 1733 AssertReturn(fFlags & (TMTIMER_FLAGS_RING0 | TMTIMER_FLAGS_NO_RING0), VERR_INVALID_FLAGS); … … 1733 1739 */ 1734 1740 PTMTIMER pTimer; 1735 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, psz Desc, &pTimer);1741 int rc = tmr3TimerCreate(pVM, enmClock, fFlags, pszName, &pTimer); 1736 1742 if (RT_SUCCESS(rc)) 1737 1743 { … … 1740 1746 pTimer->pvUser = pvUser; 1741 1747 *phTimer = pTimer->hSelf; 1742 Log(("TM: Created internal timer %p clock %d callback %p '%s'\n", pTimer, enmClock, pfnCallback, psz Desc));1748 Log(("TM: Created internal timer %p clock %d callback %p '%s'\n", pTimer, enmClock, pfnCallback, pszName)); 1743 1749 } 1744 1750 … … 1764 1770 AssertMsg( !pTimer->pCritSect 1765 1771 || VMR3GetState(pVM) != VMSTATE_RUNNING 1766 || PDMCritSectIsOwner(pTimer->pCritSect), ("%s\n", pTimer-> pszDesc));1772 || PDMCritSectIsOwner(pTimer->pCritSect), ("%s\n", pTimer->szName)); 1767 1773 1768 1774 /* … … 1777 1783 */ 1778 1784 TMTIMERSTATE const enmState = pTimer->enmState; 1779 Log2(("TMTimerDestroy: %p:{.enmState=%s, . pszDesc='%s'} cRetries=%d\n",1780 pTimer, tmTimerState(enmState), R3STRING(pTimer->pszDesc), cRetries));1785 Log2(("TMTimerDestroy: %p:{.enmState=%s, .szName='%s'} cRetries=%d\n", 1786 pTimer, tmTimerState(enmState), pTimer->szName, cRetries)); 1781 1787 switch (enmState) 1782 1788 { … … 1806 1812 case TMTIMERSTATE_PENDING_SCHEDULE_SET_EXPIRE: 1807 1813 case TMTIMERSTATE_PENDING_RESCHEDULE_SET_EXPIRE: 1808 AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer-> pszDesc));1814 AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->szName)); 1809 1815 TM_UNLOCK_TIMERS(pVM); 1810 1816 if (!RTThreadYield()) 1811 1817 RTThreadSleep(1); 1812 AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer-> pszDesc),1818 AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName), 1813 1819 VERR_TM_UNSTABLE_STATE); 1814 1820 TM_LOCK_TIMERS(pVM); … … 1824 1830 1825 1831 default: 1826 AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, R3STRING(pTimer->pszDesc)));1832 AssertMsgFailed(("Unknown timer state %d (%s)\n", enmState, pTimer->szName)); 1827 1833 TM_UNLOCK_TIMERS(pVM); 1828 1834 return VERR_TM_UNKNOWN_STATE; … … 1837 1843 if (fRc) 1838 1844 break; 1839 AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer-> pszDesc));1845 AssertMsgFailed(("%p:.enmState=%s %s\n", pTimer, tmTimerState(enmState), pTimer->szName)); 1840 1846 TM_UNLOCK_TIMERS(pVM); 1841 AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer-> pszDesc),1847 AssertMsgReturn(cRetries > 0, ("Failed waiting for stable state. state=%d (%s)\n", pTimer->enmState, pTimer->szName), 1842 1848 VERR_TM_UNSTABLE_STATE); 1843 1849 TM_LOCK_TIMERS(pVM); … … 1881 1887 #ifdef VBOX_WITH_STATISTICS 1882 1888 char szPrefix[128]; 1883 RTStrPrintf(szPrefix, sizeof(szPrefix), "/TM/Timers/%s", pTimer-> pszDesc);1889 RTStrPrintf(szPrefix, sizeof(szPrefix), "/TM/Timers/%s", pTimer->szName); 1884 1890 STAMR3DeregisterByPrefix(pVM->pUVM, szPrefix); 1885 1891 #endif … … 2266 2272 STAM_PROFILE_STOP(&pTimer->StatCritSectEnter, Locking); 2267 2273 } 2268 Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) . pszDesc=%s}\n",2269 pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer-> pszDesc));2274 Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .szName='%s'}\n", 2275 pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->szName)); 2270 2276 bool fRc; 2271 2277 TM_TRY_SET_STATE(pTimer, TMTIMERSTATE_EXPIRED_GET_UNLINK, TMTIMERSTATE_ACTIVE, fRc); … … 2298 2304 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer->hSelf, pTimer->pvUser); break; 2299 2305 default: 2300 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer-> pszDesc));2306 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->szName)); 2301 2307 break; 2302 2308 } … … 2459 2465 } 2460 2466 2461 Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) . pszDesc=%s}\n",2462 pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer-> pszDesc));2467 Log2(("tmR3TimerQueueRun: %p:{.enmState=%s, .enmClock=%d, .enmType=%d, u64Expire=%llx (now=%llx) .szName='%s'}\n", 2468 pTimer, tmTimerState(pTimer->enmState), pTimer->enmClock, pTimer->enmType, pTimer->u64Expire, u64Now, pTimer->szName)); 2463 2469 2464 2470 /* Advance the clock - don't permit timers to be out of order or armed 2465 2471 in the 'past'. */ 2466 2472 #ifdef VBOX_STRICT 2467 AssertMsg(pTimer->u64Expire >= u64Prev, ("%'RU64 < %'RU64 %s\n", pTimer->u64Expire, u64Prev, pTimer-> pszDesc));2473 AssertMsg(pTimer->u64Expire >= u64Prev, ("%'RU64 < %'RU64 %s\n", pTimer->u64Expire, u64Prev, pTimer->szName)); 2468 2474 u64Prev = pTimer->u64Expire; 2469 2475 #endif … … 2482 2488 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer->hSelf, pTimer->pvUser); break; 2483 2489 default: 2484 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer-> pszDesc));2490 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->szName)); 2485 2491 break; 2486 2492 } … … 2713 2719 PTMTIMER pTimer; 2714 2720 TMTIMER_HANDLE_TO_PTR_RETURN(pVM, hTimer, pTimer); 2715 LogFlow(("TMR3TimerSave: %p:{enmState=%s, . pszDesc={%s}} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->pszDesc, pSSM));2721 LogFlow(("TMR3TimerSave: %p:{enmState=%s, .szName='%s'} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->szName, pSSM)); 2716 2722 2717 2723 switch (pTimer->enmState) … … 2724 2730 case TMTIMERSTATE_PENDING_SCHEDULE_SET_EXPIRE: 2725 2731 case TMTIMERSTATE_PENDING_RESCHEDULE_SET_EXPIRE: 2726 AssertMsgFailed(("u64Expire is being updated! (%s)\n", pTimer-> pszDesc));2732 AssertMsgFailed(("u64Expire is being updated! (%s)\n", pTimer->szName)); 2727 2733 if (!RTThreadYield()) 2728 2734 RTThreadSleep(1); … … 2738 2744 case TMTIMERSTATE_DESTROY: 2739 2745 case TMTIMERSTATE_FREE: 2740 AssertMsgFailed(("Invalid timer state %d %s (%s)\n", pTimer->enmState, tmTimerState(pTimer->enmState), pTimer-> pszDesc));2746 AssertMsgFailed(("Invalid timer state %d %s (%s)\n", pTimer->enmState, tmTimerState(pTimer->enmState), pTimer->szName)); 2741 2747 return SSMR3HandleSetStatus(pSSM, VERR_TM_INVALID_STATE); 2742 2748 } 2743 2749 2744 AssertMsgFailed(("Unknown timer state %d (%s)\n", pTimer->enmState, pTimer-> pszDesc));2750 AssertMsgFailed(("Unknown timer state %d (%s)\n", pTimer->enmState, pTimer->szName)); 2745 2751 return SSMR3HandleSetStatus(pSSM, VERR_TM_UNKNOWN_STATE); 2746 2752 } … … 2761 2767 TMTIMER_HANDLE_TO_PTR_RETURN(pVM, hTimer, pTimer); 2762 2768 Assert(pSSM); 2763 LogFlow(("TMR3TimerLoad: %p:{enmState=%s, . pszDesc={%s}} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->pszDesc, pSSM));2769 LogFlow(("TMR3TimerLoad: %p:{enmState=%s, .szName='%s'} pSSM=%p\n", pTimer, tmTimerState(pTimer->enmState), pTimer->szName, pSSM)); 2764 2770 2765 2771 /* … … 2914 2920 AssertReturn(!pTimer->pCritSect, VERR_ALREADY_EXISTS); 2915 2921 AssertReturn(pTimer->enmState == TMTIMERSTATE_STOPPED, VERR_INVALID_STATE); 2916 LogFlow(("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, pTimer-> pszDesc, pCritSect, pszName));2922 LogFlow(("pTimer=%p (%s) pCritSect=%p (%s)\n", pTimer, pTimer->szName, pCritSect, pszName)); 2917 2923 2918 2924 pTimer->pCritSect = pCritSect; … … 3700 3706 pTimer->uHzHint, 3701 3707 tmTimerState(pTimer->enmState), 3702 pTimer-> pszDesc);3708 pTimer->szName); 3703 3709 } 3704 3710 TM_UNLOCK_TIMERS(pVM); … … 3746 3752 pTimer->uHzHint, 3747 3753 tmTimerState(pTimer->enmState), 3748 pTimer-> pszDesc);3754 pTimer->szName); 3749 3755 } 3750 3756 TM_UNLOCK_TIMERS(pVM);
Note:
See TracChangeset
for help on using the changeset viewer.