- Timestamp:
- May 27, 2009 3:36:30 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/pdmdrv.h
r18645 r20096 522 522 * @param enmClock The clock to use on this timer. 523 523 * @param pfnCallback Callback function. 524 * @param pvUser The user argument to the callback. 525 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 524 526 * @param pszDesc Pointer to description string which must stay around 525 527 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). … … 527 529 * @thread EMT 528 530 */ 529 DECLR3CALLBACKMEMBER(int, pfnTMTimerCreate,(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer));531 DECLR3CALLBACKMEMBER(int, pfnTMTimerCreate,(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer)); 530 532 531 533 /** … … 697 699 698 700 /** Current DRVHLP version number. */ 699 #define PDM_DRVHLP_VERSION 0x900 20001701 #define PDM_DRVHLP_VERSION 0x90030000 700 702 701 703 … … 837 839 * @copydoc PDMDRVHLP::pfnTMTimerCreate 838 840 */ 839 DECLINLINE(int) PDMDrvHlpTMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer)840 { 841 return pDrvIns->pDrvHlp->pfnTMTimerCreate(pDrvIns, enmClock, pfnCallback, p szDesc, ppTimer);841 DECLINLINE(int) PDMDrvHlpTMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer) 842 { 843 return pDrvIns->pDrvHlp->pfnTMTimerCreate(pDrvIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, ppTimer); 842 844 } 843 845 -
trunk/include/VBox/tm.h
r20087 r20096 154 154 * @param pDrvIns Device instance of the device which registered the timer. 155 155 * @param pTimer The timer handle. 156 */ 157 typedef DECLCALLBACK(void) FNTMTIMERDRV(PPDMDRVINS pDrvIns, PTMTIMER pTimer); 156 * @param pvUser User argument specified upon timer creation. 157 */ 158 typedef DECLCALLBACK(void) FNTMTIMERDRV(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser); 158 159 /** Pointer to a driver timer callback function. */ 159 160 typedef FNTMTIMERDRV *PFNTMTIMERDRV; … … 231 232 VMMR3DECL(int) TMR3GetImportRC(PVM pVM, const char *pszSymbol, PRTRCPTR pRCPtrValue); 232 233 VMMR3DECL(int) TMR3TimerCreateDevice(PVM pVM, PPDMDEVINS pDevIns, TMCLOCK enmClock, PFNTMTIMERDEV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer); 233 VMMR3DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer);234 VMMR3DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer); 234 235 VMMR3DECL(int) TMR3TimerCreateInternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser, const char *pszDesc, PPTMTIMERR3 ppTimer); 235 236 VMMR3DECL(PTMTIMERR3) TMR3TimerCreateExternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMEREXT pfnCallback, void *pvUser, const char *pszDesc); -
trunk/src/VBox/Devices/Audio/audio.c
r19507 r20096 1611 1611 } 1612 1612 1613 static void audio_timer_helper (PPDMDRVINS pDrvIns, PTMTIMER pTimer)1614 { 1615 AudioState *s = &glob_audio_state;1613 static DECLCALLBACK(void) audio_timer_helper (PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser) 1614 { 1615 AudioState *s = (AudioState *)pvUser; 1616 1616 audio_timer (s); 1617 1617 } … … 1628 1628 LIST_INIT (&s->cap_head); 1629 1629 1630 rc = PDMDrvHlpTMTimerCreate (pDrvIns, TMCLOCK_VIRTUAL, 1631 audio_timer_helper, "Audio timer", &s->ts);1630 rc = PDMDrvHlpTMTimerCreate (pDrvIns, TMCLOCK_VIRTUAL, audio_timer_helper, 1631 &glob_audio_state, 0, "Audio timer", &s->ts); 1632 1632 if (RT_FAILURE (rc)) 1633 1633 return rc; -
trunk/src/VBox/VMM/PDMDriver.cpp
r19454 r20096 853 853 854 854 /** @copydoc PDMDRVHLP::pfnTMTimerCreate */ 855 static DECLCALLBACK(int) pdmR3DrvHlp_TMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer)856 { 857 PDMDRV_ASSERT_DRVINS(pDrvIns); 858 LogFlow(("pdmR3DrvHlp_TMTimerCreate: caller='%s'/%d: enmClock=%d pfnCallback=%p p szDesc=%p:{%s} ppTimer=%p\n",859 pDrvIns->pDrvReg->szDriverName, pDrvIns->iInstance, enmClock, pfnCallback, p szDesc, pszDesc, ppTimer));860 861 int rc = TMR3TimerCreateDriver(pDrvIns->Internal.s.pVM, pDrvIns, enmClock, pfnCallback, p szDesc, ppTimer);855 static DECLCALLBACK(int) pdmR3DrvHlp_TMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer) 856 { 857 PDMDRV_ASSERT_DRVINS(pDrvIns); 858 LogFlow(("pdmR3DrvHlp_TMTimerCreate: caller='%s'/%d: enmClock=%d pfnCallback=%p pvUser=%p fFlags=%#x pszDesc=%p:{%s} ppTimer=%p\n", 859 pDrvIns->pDrvReg->szDriverName, pDrvIns->iInstance, enmClock, pfnCallback, pvUser, fFlags, pszDesc, pszDesc, ppTimer)); 860 861 int rc = TMR3TimerCreateDriver(pDrvIns->Internal.s.pVM, pDrvIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, ppTimer); 862 862 863 863 LogFlow(("pdmR3DrvHlp_TMTimerCreate: caller='%s'/%d: returns %Rrc *ppTimer=%p\n", pDrvIns->pDrvReg->szDriverName, pDrvIns->iInstance, rc, *ppTimer)); -
trunk/src/VBox/VMM/TM.cpp
r20091 r20096 1272 1272 * @param enmClock The clock to use on this timer. 1273 1273 * @param pfnCallback Callback function. 1274 * @param pvUser The user argument to the callback. 1275 * @param fFlags Timer creation flags, see grp_tm_timer_flags. 1274 1276 * @param pszDesc Pointer to description string which must stay around 1275 1277 * until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()). 1276 1278 * @param ppTimer Where to store the timer on success. 1277 1279 */ 1278 VMMR3DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer) 1279 { 1280 VMMR3DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, 1281 uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer) 1282 { 1283 AssertReturn(!(fFlags & ~(TMTIMER_FLAGS_NO_CRIT_SECT)), VERR_INVALID_PARAMETER); 1284 1280 1285 /* 1281 1286 * Allocate and init stuff. … … 1287 1292 (*ppTimer)->u.Drv.pfnTimer = pfnCallback; 1288 1293 (*ppTimer)->u.Drv.pDrvIns = pDrvIns; 1294 (*ppTimer)->pvUser = pvUser; 1289 1295 Log(("TM: Created device timer %p clock %d callback %p '%s'\n", (*ppTimer), enmClock, pfnCallback, pszDesc)); 1290 1296 } … … 1844 1850 { 1845 1851 case TMTIMERTYPE_DEV: pTimer->u.Dev.pfnTimer(pTimer->u.Dev.pDevIns, pTimer, pTimer->pvUser); break; 1846 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer /*, pTimer->pvUser*/); break;1852 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer, pTimer->pvUser); break; 1847 1853 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break; 1848 1854 case TMTIMERTYPE_EXTERNAL: pTimer->u.External.pfnTimer(pTimer->pvUser); break; … … 2017 2023 { 2018 2024 case TMTIMERTYPE_DEV: pTimer->u.Dev.pfnTimer(pTimer->u.Dev.pDevIns, pTimer, pTimer->pvUser); break; 2019 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer /*, pTimer->pvUser*/); break;2025 case TMTIMERTYPE_DRV: pTimer->u.Drv.pfnTimer(pTimer->u.Drv.pDrvIns, pTimer, pTimer->pvUser); break; 2020 2026 case TMTIMERTYPE_INTERNAL: pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break; 2021 2027 case TMTIMERTYPE_EXTERNAL: pTimer->u.External.pfnTimer(pTimer->pvUser); break;
Note:
See TracChangeset
for help on using the changeset viewer.