Changeset 87763 in vbox
- Timestamp:
- Feb 15, 2021 11:40:44 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/vmm/tm.h (modified) (1 diff)
-
src/VBox/VMM/VMMR3/TM.cpp (modified) (3 diffs)
-
src/VBox/VMM/include/TMInternal.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/tm.h
r87760 r87763 279 279 VMM_INT_DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer); 280 280 VMMR3DECL(int) TMR3TimerCreateInternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser, const char *pszDesc, PPTMTIMERR3 ppTimer); 281 VMMR3DECL(PTMTIMERR3) TMR3TimerCreateExternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMEREXT pfnCallback, void *pvUser, const char *pszDesc);282 281 VMMR3DECL(int) TMR3TimerDestroy(PTMTIMER pTimer); 283 282 VMM_INT_DECL(int) TMR3TimerDestroyDevice(PVM pVM, PPDMDEVINS pDevIns); -
trunk/src/VBox/VMM/VMMR3/TM.cpp
r87761 r87763 1745 1745 } 1746 1746 1747 /**1748 * Creates an external timer.1749 *1750 * @returns Timer handle on success.1751 * @returns NULL on failure.1752 * @param pVM The cross context VM structure.1753 * @param enmClock The clock to use on this timer.1754 * @param pfnCallback Callback function.1755 * @param pvUser User argument.1756 * @param pszDesc Pointer to description string which must stay around1757 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).1758 */1759 VMMR3DECL(PTMTIMERR3) TMR3TimerCreateExternal(PVM pVM, TMCLOCK enmClock,1760 PFNTMTIMEREXT pfnCallback, void *pvUser, const char *pszDesc)1761 {1762 /*1763 * Allocate and init stuff.1764 */1765 PTMTIMERR3 pTimer;1766 int rc = tmr3TimerCreate(pVM, enmClock, 0 /*fFlags*/, pszDesc, &pTimer);1767 if (RT_SUCCESS(rc))1768 {1769 pTimer->enmType = TMTIMERTYPE_EXTERNAL;1770 pTimer->u.External.pfnTimer = pfnCallback;1771 pTimer->pvUser = pvUser;1772 Log(("TM: Created external timer %p clock %d callback %p '%s'\n", pTimer, enmClock, pfnCallback, pszDesc));1773 return pTimer;1774 }1775 1776 return NULL;1777 }1778 1779 1747 1780 1748 /** … … 2316 2284 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer, pTimer->pvUser); break; 2317 2285 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break; 2318 case TMTIMERTYPE_EXTERNAL: pTimer->u.External.pfnTimer(pTimer->pvUser); break;2319 2286 default: 2320 2287 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->pszDesc)); … … 2501 2468 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer, pTimer->pvUser); break; 2502 2469 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break; 2503 case TMTIMERTYPE_EXTERNAL: pTimer->u.External.pfnTimer(pTimer->pvUser); break;2504 2470 default: 2505 2471 AssertMsgFailed(("Invalid timer type %d (%s)\n", pTimer->enmType, pTimer->pszDesc)); -
trunk/src/VBox/VMM/include/TMInternal.h
r87760 r87763 57 57 TMTIMERTYPE_DRV, 58 58 /** Internal timer . */ 59 TMTIMERTYPE_INTERNAL, 60 /** External timer. */ 61 TMTIMERTYPE_EXTERNAL 59 TMTIMERTYPE_INTERNAL 62 60 } TMTIMERTYPE; 63 61 … … 164 162 R3PTRTYPE(PFNTMTIMERINT) pfnTimer; 165 163 } Internal; 166 167 /** TMTIMERTYPE_EXTERNAL. */168 struct169 {170 /** Callback. */171 R3PTRTYPE(PFNTMTIMEREXT) pfnTimer;172 } External;173 164 } u; 174 165
Note:
See TracChangeset
for help on using the changeset viewer.

