VirtualBox

Changeset 20096 in vbox for trunk


Ignore:
Timestamp:
May 27, 2009 3:36:30 PM (16 years ago)
Author:
vboxsync
Message:

VBox/pdmdrv.h,TM: user argument and flags for driver timers.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/pdmdrv.h

    r18645 r20096  
    522522     * @param   enmClock        The clock to use on this timer.
    523523     * @param   pfnCallback     Callback function.
     524     * @param   pvUser          The user argument to the callback.
     525     * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
    524526     * @param   pszDesc         Pointer to description string which must stay around
    525527     *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
     
    527529     * @thread  EMT
    528530     */
    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));
    530532
    531533    /**
     
    697699
    698700/** Current DRVHLP version number. */
    699 #define PDM_DRVHLP_VERSION  0x90020001
     701#define PDM_DRVHLP_VERSION  0x90030000
    700702
    701703
     
    837839 * @copydoc PDMDRVHLP::pfnTMTimerCreate
    838840 */
    839 DECLINLINE(int) PDMDrvHlpTMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer)
    840 {
    841     return pDrvIns->pDrvHlp->pfnTMTimerCreate(pDrvIns, enmClock, pfnCallback, pszDesc, ppTimer);
     841DECLINLINE(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);
    842844}
    843845
  • trunk/include/VBox/tm.h

    r20087 r20096  
    154154 * @param   pDrvIns         Device instance of the device which registered the timer.
    155155 * @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 */
     158typedef DECLCALLBACK(void) FNTMTIMERDRV(PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser);
    158159/** Pointer to a driver timer callback function. */
    159160typedef FNTMTIMERDRV *PFNTMTIMERDRV;
     
    231232VMMR3DECL(int)    TMR3GetImportRC(PVM pVM, const char *pszSymbol, PRTRCPTR pRCPtrValue);
    232233VMMR3DECL(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);
     234VMMR3DECL(int)    TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer);
    234235VMMR3DECL(int)    TMR3TimerCreateInternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMERINT pfnCallback, void *pvUser, const char *pszDesc, PPTMTIMERR3 ppTimer);
    235236VMMR3DECL(PTMTIMERR3) TMR3TimerCreateExternal(PVM pVM, TMCLOCK enmClock, PFNTMTIMEREXT pfnCallback, void *pvUser, const char *pszDesc);
  • trunk/src/VBox/Devices/Audio/audio.c

    r19507 r20096  
    16111611}
    16121612
    1613 static void audio_timer_helper (PPDMDRVINS pDrvIns, PTMTIMER pTimer)
    1614 {
    1615     AudioState *s = &glob_audio_state;
     1613static DECLCALLBACK(void) audio_timer_helper (PPDMDRVINS pDrvIns, PTMTIMER pTimer, void *pvUser)
     1614{
     1615    AudioState *s = (AudioState *)pvUser;
    16161616    audio_timer (s);
    16171617}
     
    16281628    LIST_INIT (&s->cap_head);
    16291629
    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);
    16321632    if (RT_FAILURE (rc))
    16331633        return rc;
  • trunk/src/VBox/VMM/PDMDriver.cpp

    r19454 r20096  
    853853
    854854/** @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 pszDesc=%p:{%s} ppTimer=%p\n",
    859              pDrvIns->pDrvReg->szDriverName, pDrvIns->iInstance, enmClock, pfnCallback, pszDesc, pszDesc, ppTimer));
    860 
    861     int rc = TMR3TimerCreateDriver(pDrvIns->Internal.s.pVM, pDrvIns, enmClock, pfnCallback, pszDesc, ppTimer);
     855static 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);
    862862
    863863    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  
    12721272 * @param   enmClock        The clock to use on this timer.
    12731273 * @param   pfnCallback     Callback function.
     1274 * @param   pvUser          The user argument to the callback.
     1275 * @param   fFlags          Timer creation flags, see grp_tm_timer_flags.
    12741276 * @param   pszDesc         Pointer to description string which must stay around
    12751277 *                          until the timer is fully destroyed (i.e. a bit after TMTimerDestroy()).
    12761278 * @param   ppTimer         Where to store the timer on success.
    12771279 */
    1278 VMMR3DECL(int) TMR3TimerCreateDriver(PVM pVM, PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, const char *pszDesc, PPTMTIMERR3 ppTimer)
    1279 {
     1280VMMR3DECL(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
    12801285    /*
    12811286     * Allocate and init stuff.
     
    12871292        (*ppTimer)->u.Drv.pfnTimer  = pfnCallback;
    12881293        (*ppTimer)->u.Drv.pDrvIns   = pDrvIns;
     1294        (*ppTimer)->pvUser          = pvUser;
    12891295        Log(("TM: Created device timer %p clock %d callback %p '%s'\n", (*ppTimer), enmClock, pfnCallback, pszDesc));
    12901296    }
     
    18441850            {
    18451851                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;
    18471853                case TMTIMERTYPE_INTERNAL:  pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break;
    18481854                case TMTIMERTYPE_EXTERNAL:  pTimer->u.External.pfnTimer(pTimer->pvUser); break;
     
    20172023            {
    20182024                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;
    20202026                case TMTIMERTYPE_INTERNAL:  pTimer->u.Internal.pfnTimer(pVM, pTimer, pTimer->pvUser); break;
    20212027                case TMTIMERTYPE_EXTERNAL:  pTimer->u.External.pfnTimer(pTimer->pvUser); break;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette