VirtualBox

Changeset 25891 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Jan 18, 2010 1:07:21 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56701
Message:

PDMDrv,*: multi context drivers, part 1.

Location:
trunk/include/VBox
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/include/VBox/pdmcommon.h

    r25477 r25891  
    4949/** The attach/detach command is not a hotplug event. */
    5050#define PDM_TACH_FLAGS_NOT_HOT_PLUG     RT_BIT_32(0)
     51/** Indicates that no attach or detach callbacks should be made.
     52 * This is mostly for internal use.  */
     53#define PDM_TACH_FLAGS_NO_CALLBACKS     RT_BIT_32(1)
    5154/* @} */
    5255
  • TabularUnified trunk/include/VBox/pdmdev.h

    r25741 r25891  
    32593259    uint32_t                    u32Version;
    32603260    /** Device instance number. */
    3261     RTUINT                      iInstance;
     3261    uint32_t                    iInstance;
    32623262
    32633263    /** Pointer the GC PDM Device API. */
  • TabularUnified trunk/include/VBox/pdmdrv.h

    r25647 r25891  
    44
    55/*
    6  * Copyright (C) 2006-2007 Sun Microsystems, Inc.
     6 * Copyright (C) 2006-2010 Sun Microsystems, Inc.
    77 *
    88 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    5555 * @{
    5656 */
     57
     58/** Pointer const PDM Driver API, ring-3. */
     59typedef R3PTRTYPE(struct PDMDRVHLPR3 const *) PCPDMDRVHLPR3;
     60/** Pointer const PDM Driver API, ring-0. */
     61typedef R0PTRTYPE(struct PDMDRVHLPR0 const *) PCPDMDRVHLPR0;
     62/** Pointer const PDM Driver API, raw-mode context. */
     63typedef RCPTRTYPE(struct PDMDRVHLPRC const *) PCPDMDRVHLPRC;
     64
    5765
    5866/**
     
    242250
    243251/** Current DRVREG version number. */
    244 #define PDM_DRVREG_VERSION  0x80020000
     252#define PDM_DRVREG_VERSION  UINT32_C(0x80030000)
    245253
    246254/** PDM Driver Flags.
     
    249257 * The bit count for the current host. */
    250258#if HC_ARCH_BITS == 32
    251 # define PDM_DRVREG_FLAGS_HOST_BITS_DEFAULT     0x000000001
     259# define PDM_DRVREG_FLAGS_HOST_BITS_DEFAULT     UINT32_C(0x00000001)
    252260#elif HC_ARCH_BITS == 64
    253 # define PDM_DRVREG_FLAGS_HOST_BITS_DEFAULT     0x000000002
     261# define PDM_DRVREG_FLAGS_HOST_BITS_DEFAULT     UINT32_C(0x00000002)
    254262#else
    255263# error Unsupported HC_ARCH_BITS value.
    256264#endif
    257265/** The host bit count mask. */
    258 #define PDM_DRVREG_FLAGS_HOST_BITS_MASK         0x000000003
     266#define PDM_DRVREG_FLAGS_HOST_BITS_MASK         UINT32_C(0x00000003)
     267/** This flag is used to indicate that the driver has a RC component. */
     268#define PDM_DRVREG_FLAGS_RC                     UINT32_C(0x00000010)
     269/** This flag is used to indicate that the driver has a R0 component. */
     270#define PDM_DRVREG_FLAGS_R0                     UINT32_C(0x00000020)
    259271
    260272/** @} */
     
    299311
    300312/**
     313 * PDM Driver Instance.
     314 */
     315typedef struct PDMDRVINS
     316{
     317    /** Structure version. PDM_DRVINS_VERSION defines the current version. */
     318    uint32_t                    u32Version;
     319    /** Driver instance number. */
     320    uint32_t                    iInstance;
     321
     322    /** Pointer the PDM Driver API. */
     323    RCPTRTYPE(PCPDMDRVHLPRC)    pDrvHlpRC;
     324    /** Pointer to driver instance data. */
     325    RCPTRTYPE(void *)           pvInstanceDataRC;
     326
     327    /** Pointer the PDM Driver API. */
     328    R0PTRTYPE(PCPDMDRVHLPR0)    pDrvHlpR0;
     329    /** Pointer to driver instance data. */
     330    R0PTRTYPE(void *)           pvInstanceDataR0;
     331
     332    /** Pointer the PDM Driver API. */
     333    R3PTRTYPE(PCPDMDRVHLPR3)    pDrvHlpR3;
     334    /** Pointer to driver instance data. */
     335    R3PTRTYPE(void *)           pvInstanceDataR3;
     336
     337    /** Pointer to driver registration structure.  */
     338    R3PTRTYPE(PCPDMDRVREG)      pDrvReg;
     339    /** Configuration handle. */
     340    R3PTRTYPE(PCFGMNODE)        pCfgHandle;
     341
     342    /** Pointer to the base interface of the device/driver instance above. */
     343    R3PTRTYPE(PPDMIBASE)        pUpBase;
     344    /** Pointer to the base interface of the driver instance below. */
     345    R3PTRTYPE(PPDMIBASE)        pDownBase;
     346
     347    /** The base interface of the driver.
     348     * The driver constructor initializes this. */
     349    PDMIBASE                    IBase;
     350    /** Align the internal data more naturally. */
     351    RTR3PTR                     R3PtrPadding;
     352
     353    /** Internal data. */
     354    union
     355    {
     356#ifdef PDMDRVINSINT_DECLARED
     357        PDMDRVINSINT            s;
     358#endif
     359        uint8_t                 padding[HC_ARCH_BITS == 32 ? 40 + 32 : 72 + 24];
     360    } Internal;
     361
     362    /** Driver instance data. The size of this area is defined
     363     * in the PDMDRVREG::cbInstanceData field. */
     364    char                        achInstanceData[4];
     365} PDMDRVINS;
     366
     367/** Current DRVREG version number. */
     368#define PDM_DRVINS_VERSION      UINT32_C(0xa0020000)
     369
     370/** Converts a pointer to the PDMDRVINS::IBase to a pointer to PDMDRVINS. */
     371#define PDMIBASE_2_PDMDRV(pInterface) ( (PPDMDRVINS)((char *)(pInterface) - RT_OFFSETOF(PDMDRVINS, IBase)) )
     372
     373
     374
     375
     376/**
    301377 * USB hub registration structure.
    302378 */
     
    339415
    340416/** Current PDMUSBHUBREG version number. */
    341 #define PDM_USBHUBREG_VERSION       0xeb010000
     417#define PDM_USBHUBREG_VERSION       UINT32_C(0xeb010000)
    342418
    343419
     
    362438
    363439/** Current PDMUSBHUBHLP version number. */
    364 #define PDM_USBHUBHLP_VERSION       0xea010000
    365 
    366 
    367 
    368 /**
    369  * Poller callback.
    370  *
    371  * @param   pDrvIns     The driver instance.
    372  */
    373 typedef DECLCALLBACK(void) FNPDMDRVPOLLER(PPDMDRVINS pDrvIns);
    374 /** Pointer to a FNPDMDRVPOLLER function. */
    375 typedef FNPDMDRVPOLLER *PFNPDMDRVPOLLER;
     440#define PDM_USBHUBHLP_VERSION       UINT32_C(0xea010000)
     441
    376442
    377443#ifdef IN_RING3
     
    379445 * PDM Driver API.
    380446 */
    381 typedef struct PDMDRVHLP
     447typedef struct PDMDRVHLPR3
    382448{
    383449    /** Structure version. PDM_DRVHLP_VERSION defines the current version. */
     
    761827    /** Just a safety precaution. */
    762828    uint32_t                        u32TheEnd;
    763 } PDMDRVHLP;
    764 /** Pointer PDM Driver API. */
    765 typedef PDMDRVHLP *PPDMDRVHLP;
    766 /** Pointer const PDM Driver API. */
    767 typedef const PDMDRVHLP *PCPDMDRVHLP;
    768 
     829} PDMDRVHLPR3;
    769830/** Current DRVHLP version number. */
    770 #define PDM_DRVHLP_VERSION  0x90050000
    771 
    772 
    773 
    774 /**
    775  * PDM Driver Instance.
    776  */
    777 typedef struct PDMDRVINS
    778 {
    779     /** Structure version. PDM_DRVINS_VERSION defines the current version. */
    780     uint32_t                    u32Version;
    781 
    782     /** Internal data. */
    783     union
    784     {
    785 #ifdef PDMDRVINSINT_DECLARED
    786         PDMDRVINSINT            s;
    787 #endif
    788         uint8_t                 padding[HC_ARCH_BITS == 32 ? 32 : 64];
    789     } Internal;
    790 
    791     /** Pointer the PDM Driver API. */
    792     R3PTRTYPE(PCPDMDRVHLP)      pDrvHlp;
    793     /** Pointer to driver registration structure.  */
    794     R3PTRTYPE(PCPDMDRVREG)      pDrvReg;
    795     /** Configuration handle. */
    796     R3PTRTYPE(PCFGMNODE)        pCfgHandle;
    797     /** Driver instance number. */
    798     RTUINT                      iInstance;
    799     /** Pointer to the base interface of the device/driver instance above. */
    800     R3PTRTYPE(PPDMIBASE)        pUpBase;
    801     /** Pointer to the base interface of the driver instance below. */
    802     R3PTRTYPE(PPDMIBASE)        pDownBase;
    803     /** The base interface of the driver.
    804      * The driver constructor initializes this. */
    805     PDMIBASE                    IBase;
    806     /* padding to make achInstanceData aligned at 16 byte boundrary. */
    807     uint32_t                    au32Padding[HC_ARCH_BITS == 32 ? 3 : 1];
    808     /** Pointer to driver instance data. */
    809     R3PTRTYPE(void *)           pvInstanceData;
    810     /** Driver instance data. The size of this area is defined
    811      * in the PDMDRVREG::cbInstanceData field. */
    812     char                        achInstanceData[4];
    813 } PDMDRVINS;
    814 
    815 /** Current DRVREG version number. */
    816 #define PDM_DRVINS_VERSION  0xa0010000
    817 
    818 /** Converts a pointer to the PDMDRVINS::IBase to a pointer to PDMDRVINS. */
    819 #define PDMIBASE_2_PDMDRV(pInterface) ( (PPDMDRVINS)((char *)(pInterface) - RT_OFFSETOF(PDMDRVINS, IBase)) )
     831#define PDM_DRVHLPR3_VERSION    UINT32_C(0x90050000)
     832
    820833
    821834/**
     
    826839    va_list va;
    827840    va_start(va, pszFormat);
    828     pDrvIns->pDrvHlp->pfnVMSetErrorV(pDrvIns, rc, RT_SRC_POS_ARGS, pszFormat, va);
     841    pDrvIns->CTX_SUFF(pDrvHlp)->pfnVMSetErrorV(pDrvIns, rc, RT_SRC_POS_ARGS, pszFormat, va);
    829842    va_end(va);
    830843    return rc;
     
    836849#define PDMDRV_SET_ERROR(pDrvIns, rc, pszError)  \
    837850    PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, "%s", pszError)
     851
     852/**
     853 * @copydoc PDMDRVHLP::pfnVMSetErrorV
     854 */
     855DECLINLINE(int) PDMDrvHlpVMSetErrorV(PPDMDRVINS pDrvIns, const int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va)
     856{
     857    return pDrvIns->CTX_SUFF(pDrvHlp)->pfnVMSetErrorV(pDrvIns, rc, RT_SRC_POS_ARGS, pszFormat, va);
     858}
     859
    838860
    839861/**
     
    845867    int rc;
    846868    va_start(va, pszFormat);
    847     rc = pDrvIns->pDrvHlp->pfnVMSetRuntimeErrorV(pDrvIns, fFlags, pszErrorId, pszFormat, va);
     869    rc = pDrvIns->CTX_SUFF(pDrvHlp)->pfnVMSetRuntimeErrorV(pDrvIns, fFlags, pszErrorId, pszFormat, va);
    848870    va_end(va);
    849871    return rc;
     
    856878    PDMDrvHlpVMSetRuntimeError(pDrvIns, fFlags, pszErrorId, "%s", pszError)
    857879
     880/**
     881 * @copydoc PDMDRVHLP::pfnVMSetRuntimeErrorV
     882 */
     883DECLINLINE(int) PDMDrvHlpVMSetRuntimeErrorV(PPDMDRVINS pDrvIns, uint32_t fFlags, const char *pszErrorId, const char *pszFormat, va_list va)
     884{
     885    return pDrvIns->CTX_SUFF(pDrvHlp)->pfnVMSetRuntimeErrorV(pDrvIns, fFlags, pszErrorId, pszFormat, va);
     886}
     887
    858888#endif /* IN_RING3 */
    859889
     
    863893 */
    864894#ifdef VBOX_STRICT
    865 # define PDMDRV_ASSERT_EMT(pDrvIns)  pDrvIns->pDrvHlp->pfnAssertEMT(pDrvIns, __FILE__, __LINE__, __FUNCTION__)
     895# define PDMDRV_ASSERT_EMT(pDrvIns)  pDrvIns->CTX_SUFF(pDrvHlp)->pfnAssertEMT(pDrvIns, __FILE__, __LINE__, __FUNCTION__)
    866896#else
    867897# define PDMDRV_ASSERT_EMT(pDrvIns)  do { } while (0)
     
    872902 */
    873903#ifdef VBOX_STRICT
    874 # define PDMDRV_ASSERT_OTHER(pDrvIns)  pDrvIns->pDrvHlp->pfnAssertOther(pDrvIns, __FILE__, __LINE__, __FUNCTION__)
     904# define PDMDRV_ASSERT_OTHER(pDrvIns)  pDrvIns->CTX_SUFF(pDrvHlp)->pfnAssertOther(pDrvIns, __FILE__, __LINE__, __FUNCTION__)
    875905#else
    876906# define PDMDRV_ASSERT_OTHER(pDrvIns)  do { } while (0)
     
    885915DECLINLINE(int) PDMDrvHlpAttach(PPDMDRVINS pDrvIns, uint32_t fFlags, PPDMIBASE *ppBaseInterface)
    886916{
    887     return pDrvIns->pDrvHlp->pfnAttach(pDrvIns, fFlags, ppBaseInterface);
     917    return pDrvIns->pDrvHlpR3->pfnAttach(pDrvIns, fFlags, ppBaseInterface);
    888918}
    889919
     
    896926DECLINLINE(int) PDMDrvHlpNoAttach(PPDMDRVINS pDrvIns)
    897927{
    898     return pDrvIns->pDrvHlp->pfnAttach(pDrvIns, 0, NULL);
     928    return pDrvIns->pDrvHlpR3->pfnAttach(pDrvIns, 0, NULL);
    899929}
    900930
     
    904934DECLINLINE(int) PDMDrvHlpDetach(PPDMDRVINS pDrvIns, uint32_t fFlags)
    905935{
    906     return pDrvIns->pDrvHlp->pfnDetach(pDrvIns, fFlags);
     936    return pDrvIns->pDrvHlpR3->pfnDetach(pDrvIns, fFlags);
    907937}
    908938
     
    912942DECLINLINE(int) PDMDrvHlpDetachSelf(PPDMDRVINS pDrvIns, uint32_t fFlags)
    913943{
    914     return pDrvIns->pDrvHlp->pfnDetachSelf(pDrvIns, fFlags);
     944    return pDrvIns->pDrvHlpR3->pfnDetachSelf(pDrvIns, fFlags);
     945}
     946
     947/**
     948 * @copydoc PDMDRVHLP::pfnMountPrepare
     949 */
     950DECLINLINE(int) PDMDrvHlpMountPrepare(PPDMDRVINS pDrvIns, const char *pszFilename, const char *pszCoreDriver)
     951{
     952    return pDrvIns->pDrvHlpR3->pfnMountPrepare(pDrvIns, pszFilename, pszCoreDriver);
    915953}
    916954
     
    920958DECLINLINE(VMSTATE) PDMDrvHlpVMState(PPDMDRVINS pDrvIns)
    921959{
    922     return pDrvIns->pDrvHlp->pfnVMState(pDrvIns);
     960    return pDrvIns->CTX_SUFF(pDrvHlp)->pfnVMState(pDrvIns);
    923961}
    924962
     
    928966DECLINLINE(bool) PDMDrvHlpVMTeleportedAndNotFullyResumedYet(PPDMDRVINS pDrvIns)
    929967{
    930     return pDrvIns->pDrvHlp->pfnVMTeleportedAndNotFullyResumedYet(pDrvIns);
     968    return pDrvIns->pDrvHlpR3->pfnVMTeleportedAndNotFullyResumedYet(pDrvIns);
    931969}
    932970
     
    937975                                        PFNPDMQUEUEDRV pfnCallback, const char *pszName, PPDMQUEUE *ppQueue)
    938976{
    939     return pDrvIns->pDrvHlp->pfnPDMQueueCreate(pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, ppQueue);
     977    return pDrvIns->pDrvHlpR3->pfnPDMQueueCreate(pDrvIns, cbItem, cItems, cMilliesInterval, pfnCallback, pszName, ppQueue);
    940978}
    941979
     
    945983DECLINLINE(uint64_t) PDMDrvHlpTMGetVirtualFreq(PPDMDRVINS pDrvIns)
    946984{
    947     return pDrvIns->pDrvHlp->pfnTMGetVirtualFreq(pDrvIns);
     985    return pDrvIns->pDrvHlpR3->pfnTMGetVirtualFreq(pDrvIns);
    948986}
    949987
     
    953991DECLINLINE(uint64_t) PDMDrvHlpTMGetVirtualTime(PPDMDRVINS pDrvIns)
    954992{
    955     return pDrvIns->pDrvHlp->pfnTMGetVirtualTime(pDrvIns);
     993    return pDrvIns->pDrvHlpR3->pfnTMGetVirtualTime(pDrvIns);
    956994}
    957995
     
    961999DECLINLINE(int) PDMDrvHlpTMTimerCreate(PPDMDRVINS pDrvIns, TMCLOCK enmClock, PFNTMTIMERDRV pfnCallback, void *pvUser, uint32_t fFlags, const char *pszDesc, PPTMTIMERR3 ppTimer)
    9621000{
    963     return pDrvIns->pDrvHlp->pfnTMTimerCreate(pDrvIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, ppTimer);
     1001    return pDrvIns->pDrvHlpR3->pfnTMTimerCreate(pDrvIns, enmClock, pfnCallback, pvUser, fFlags, pszDesc, ppTimer);
    9641002}
    9651003
     
    9781016                                     PFNSSMDRVSAVEEXEC pfnSaveExec, PFNSSMDRVLOADEXEC pfnLoadExec)
    9791017{
    980     return pDrvIns->pDrvHlp->pfnSSMRegister(pDrvIns, uVersion, cbGuess,
    981                                             NULL /*pfnLivePrep*/, NULL /*pfnLiveExec*/, NULL /*pfnLiveVote*/,
    982                                             NULL /*pfnSavePrep*/, pfnSaveExec,          NULL /*pfnSaveDone*/,
    983                                             NULL /*pfnLoadPrep*/, pfnLoadExec,          NULL /*pfnLoadDone*/);
     1018    return pDrvIns->pDrvHlpR3->pfnSSMRegister(pDrvIns, uVersion, cbGuess,
     1019                                              NULL /*pfnLivePrep*/, NULL /*pfnLiveExec*/, NULL /*pfnLiveVote*/,
     1020                                              NULL /*pfnSavePrep*/, pfnSaveExec,          NULL /*pfnSaveDone*/,
     1021                                              NULL /*pfnLoadPrep*/, pfnLoadExec,          NULL /*pfnLoadDone*/);
    9841022}
    9851023
     
    9921030                                       PFNSSMDRVLOADPREP pfnLoadPrep, PFNSSMDRVLOADEXEC pfnLoadExec, PFNSSMDRVLOADDONE pfnLoadDone)
    9931031{
    994     return pDrvIns->pDrvHlp->pfnSSMRegister(pDrvIns, uVersion, cbGuess,
    995                                             pfnLivePrep, pfnLiveExec, pfnLiveVote,
    996                                             pfnSavePrep, pfnSaveExec, pfnSaveDone,
    997                                             pfnLoadPrep, pfnLoadExec, pfnLoadDone);
     1032    return pDrvIns->pDrvHlpR3->pfnSSMRegister(pDrvIns, uVersion, cbGuess,
     1033                                              pfnLivePrep, pfnLiveExec, pfnLiveVote,
     1034                                              pfnSavePrep, pfnSaveExec, pfnSaveDone,
     1035                                              pfnLoadPrep, pfnLoadExec, pfnLoadDone);
    9981036}
    9991037
     
    10071045DECLINLINE(int) PDMDrvHlpSSMRegisterLoadDone(PPDMDRVINS pDrvIns, PFNSSMDRVLOADDONE pfnLoadDone)
    10081046{
    1009     return pDrvIns->pDrvHlp->pfnSSMRegister(pDrvIns, 0 /*uVersion*/, 0 /*cbGuess*/,
    1010                                             NULL /*pfnLivePrep*/, NULL /*pfnLiveExec*/, NULL /*pfnLiveVote*/,
    1011                                             NULL /*pfnSavePrep*/, NULL /*pfnSaveExec*/, NULL /*pfnSaveDone*/,
    1012                                             NULL /*pfnLoadPrep*/, NULL /*pfnLoadExec*/, pfnLoadDone);
     1047    return pDrvIns->pDrvHlpR3->pfnSSMRegister(pDrvIns, 0 /*uVersion*/, 0 /*cbGuess*/,
     1048                                              NULL /*pfnLivePrep*/, NULL /*pfnLiveExec*/, NULL /*pfnLiveVote*/,
     1049                                              NULL /*pfnSavePrep*/, NULL /*pfnSaveExec*/, NULL /*pfnSaveDone*/,
     1050                                              NULL /*pfnLoadPrep*/, NULL /*pfnLoadExec*/, pfnLoadDone);
    10131051}
    10141052
     
    10181056DECLINLINE(void) PDMDrvHlpSTAMRegister(PPDMDRVINS pDrvIns, void *pvSample, STAMTYPE enmType, const char *pszName, STAMUNIT enmUnit, const char *pszDesc)
    10191057{
    1020     pDrvIns->pDrvHlp->pfnSTAMRegister(pDrvIns, pvSample, enmType, pszName, enmUnit, pszDesc);
     1058    pDrvIns->pDrvHlpR3->pfnSTAMRegister(pDrvIns, pvSample, enmType, pszName, enmUnit, pszDesc);
    10211059}
    10221060
     
    10291067    va_list va;
    10301068    va_start(va, pszName);
    1031     pDrvIns->pDrvHlp->pfnSTAMRegisterV(pDrvIns, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, va);
     1069    pDrvIns->pDrvHlpR3->pfnSTAMRegisterV(pDrvIns, pvSample, enmType, enmVisibility, enmUnit, pszDesc, pszName, va);
    10321070    va_end(va);
    10331071}
     
    10381076DECLINLINE(int) PDMDrvHlpSTAMDeregister(PPDMDRVINS pDrvIns, void *pvSample)
    10391077{
    1040     return pDrvIns->pDrvHlp->pfnSTAMDeregister(pDrvIns, pvSample);
     1078    return pDrvIns->pDrvHlpR3->pfnSTAMDeregister(pDrvIns, pvSample);
     1079}
     1080
     1081/**
     1082 * @copydoc PDMDRVHLP::pfnSUPCallVMMR0Ex
     1083 */
     1084DECLINLINE(int) PDMDrvHlpSUPCallVMMR0Ex(PPDMDRVINS pDrvIns, unsigned uOperation, void *pvArg, unsigned cbArg)
     1085{
     1086    return pDrvIns->pDrvHlpR3->pfnSUPCallVMMR0Ex(pDrvIns, uOperation, pvArg, cbArg);
    10411087}
    10421088
     
    10461092DECLINLINE(int) PDMDrvHlpUSBRegisterHub(PPDMDRVINS pDrvIns, uint32_t fVersions, uint32_t cPorts, PCPDMUSBHUBREG pUsbHubReg, PPCPDMUSBHUBHLP ppUsbHubHlp)
    10471093{
    1048     return pDrvIns->pDrvHlp->pfnUSBRegisterHub(pDrvIns, fVersions, cPorts, pUsbHubReg, ppUsbHubHlp);
     1094    return pDrvIns->pDrvHlpR3->pfnUSBRegisterHub(pDrvIns, fVersions, cPorts, pUsbHubReg, ppUsbHubHlp);
    10491095}
    10501096
     
    10541100DECLINLINE(int) PDMDrvHlpSetAsyncNotification(PPDMDRVINS pDrvIns, PFNPDMDRVASYNCNOTIFY pfnAsyncNotify)
    10551101{
    1056     return pDrvIns->pDrvHlp->pfnSetAsyncNotification(pDrvIns, pfnAsyncNotify);
     1102    return pDrvIns->pDrvHlpR3->pfnSetAsyncNotification(pDrvIns, pfnAsyncNotify);
    10571103}
    10581104
     
    10621108DECLINLINE(void) PDMDrvHlpAsyncNotificationCompleted(PPDMDRVINS pDrvIns)
    10631109{
    1064     pDrvIns->pDrvHlp->pfnAsyncNotificationCompleted(pDrvIns);
     1110    pDrvIns->pDrvHlpR3->pfnAsyncNotificationCompleted(pDrvIns);
    10651111}
    10661112
     
    10711117                                         PFNPDMTHREADWAKEUPDRV pfnWakeup, size_t cbStack, RTTHREADTYPE enmType, const char *pszName)
    10721118{
    1073     return pDrvIns->pDrvHlp->pfnPDMThreadCreate(pDrvIns, ppThread, pvUser, pfnThread, pfnWakeup, cbStack, enmType, pszName);
    1074 }
    1075 
    1076 #ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
     1119    return pDrvIns->pDrvHlpR3->pfnPDMThreadCreate(pDrvIns, ppThread, pvUser, pfnThread, pfnWakeup, cbStack, enmType, pszName);
     1120}
     1121
     1122# ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
    10771123/**
    10781124 * @copydoc PDMDRVHLP::pfnPDMAsyncCompletionTemplateCreate
     
    10811127                                                          PFNPDMASYNCCOMPLETEDRV pfnCompleted, void *pvTemplateUser, const char *pszDesc)
    10821128{
    1083     return pDrvIns->pDrvHlp->pfnPDMAsyncCompletionTemplateCreate(pDrvIns, ppTemplate, pfnCompleted, pvTemplateUser, pszDesc);
    1084 }
    1085 #endif
    1086 
    1087 #endif /* IN_RING3 */
    1088 
     1129    return pDrvIns->pDrvHlpR3->pfnPDMAsyncCompletionTemplateCreate(pDrvIns, ppTemplate, pfnCompleted, pvTemplateUser, pszDesc);
     1130}
     1131# endif
    10891132
    10901133
     
    11151158
    11161159/** Current version of the PDMDRVREGCB structure.  */
    1117 #define PDM_DRVREG_CB_VERSION 0xb0010000
     1160#define PDM_DRVREG_CB_VERSION   UINT32_C(0xb0010000)
    11181161
    11191162
     
    11321175VMMR3DECL(int) PDMR3RegisterDrivers(PVM pVM, FNPDMVBOXDRIVERSREGISTER pfnCallback);
    11331176
     1177#endif /* IN_RING3 */
     1178
    11341179/** @} */
    11351180
Note: See TracChangeset for help on using the changeset viewer.

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