VirtualBox

Changeset 3112 in vbox


Ignore:
Timestamp:
Jun 14, 2007 6:23:38 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
21997
Message:

Added full set of runtime error functions to PDM device/driver
interface.

Location:
trunk
Files:
5 edited

Legend:

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

    r3110 r3112  
    10701070     * @param   pInterface      Pointer to the interface structure containing the called function pointer.
    10711071     * @thread  The emulation thread.
    1072      */
    1073     DECLR3CALLBACKMEMBER(int, pfnUnmount,(PPDMIMOUNT pInterface));
     1072     * @param   fForce          Force the unmount, even for locked media.
     1073     * @thread  The emulation thread.
     1074     */
     1075    DECLR3CALLBACKMEMBER(int, pfnUnmount,(PPDMIMOUNT pInterface, bool fForce));
    10741076
    10751077    /**
     
    25512553
    25522554    /**
     2555     * Set the VM runtime error message
     2556     *
     2557     * @returns VBox status code.
     2558     * @param   pDrvIns         Driver instance.
     2559     * @param   fFatal          Whether it is a fatal error or not.
     2560     * @param   pszErrorID      Error ID string.
     2561     * @param   pszFormat       Error message format string.
     2562     * @param   ...             Error message arguments.
     2563     */
     2564    DECLR3CALLBACKMEMBER(int, pfnVMSetRuntimeError,(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...));
     2565
     2566    /**
     2567     * Set the VM runtime error message
     2568     *
     2569     * @returns VBox status code.
     2570     * @param   pDrvIns         Driver instance.
     2571     * @param   fFatal          Whether it is a fatal error or not.
     2572     * @param   pszErrorID      Error ID string.
     2573     * @param   pszFormat       Error message format string.
     2574     * @param   va              Error message arguments.
     2575     */
     2576    DECLR3CALLBACKMEMBER(int, pfnVMSetRuntimeErrorV,(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va));
     2577
     2578    /**
    25532579     * Create a queue.
    25542580     *
     
    27792805/** @def PDMDRV_SET_ERROR
    27802806 * Set the VM error. See PDMDrvHlpVMSetError() for printf like message formatting.
    2781  * Don't use any '%' in the error string!
    27822807 */
    27832808#define PDMDRV_SET_ERROR(pDrvIns, rc, pszError)  \
    2784     PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, pszError)
     2809    PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, "%s", pszError)
     2810
     2811/**
     2812 * @copydoc PDMDRVHLP::pfnVMSetRuntimeError
     2813 */
     2814DECLINLINE(int) PDMDrvHlpVMSetRuntimeError(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     2815{
     2816    va_list va;
     2817    int rc;
     2818    va_start(va, pszFormat);
     2819    rc = pDrvIns->pDrvHlp->pfnVMSetRuntimeErrorV(pDrvIns, fFatal, pszErrorID, pszFormat, va);
     2820    va_end(va);
     2821    return rc;
     2822}
     2823
     2824/** @def PDMDRV_SET_RUNTIME_ERROR
     2825 * Set the VM runtime error. See PDMDrvHlpVMSetRuntimeError() for printf like message formatting.
     2826 */
     2827#define PDMDRV_SET_RUNTIME_ERROR(pDrvIns, fFatal, pszErrorID, pszError)  \
     2828    PDMDrvHlpVMSetError(pDrvIns, fFatal, pszErrorID, "%s", pszError)
    27852829
    27862830#endif /* IN_RING3 */
     
    48654909
    48664910    /**
     4911     * Set the VM runtime error message
     4912     *
     4913     * @returns VBox status code.
     4914     * @param   pDevIns         Device instance.
     4915     * @param   fFatal          Whether it is a fatal error or not.
     4916     * @param   pszErrorID      Error ID string.
     4917     * @param   pszFormat       Error message format string.
     4918     * @param   ...             Error message arguments.
     4919     */
     4920    DECLR3CALLBACKMEMBER(int, pfnVMSetRuntimeError,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...));
     4921
     4922    /**
     4923     * Set the VM runtime error message
     4924     *
     4925     * @returns VBox status code.
     4926     * @param   pDevIns         Device instance.
     4927     * @param   fFatal          Whether it is a fatal error or not.
     4928     * @param   pszErrorID      Error ID string.
     4929     * @param   pszFormat       Error message format string.
     4930     * @param   va              Error message arguments.
     4931     */
     4932    DECLR3CALLBACKMEMBER(int, pfnVMSetRuntimeErrorV,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va));
     4933
     4934    /**
    48674935     * Assert that the current thread is the emulation thread.
    48684936     *
     
    54455513
    54465514    /**
     5515     * Set the VM runtime error message
     5516     *
     5517     * @returns VBox status code.
     5518     * @param   pDevIns         Device instance.
     5519     * @param   fFatal          Whether it is a fatal error or not.
     5520     * @param   pszErrorID      Error ID string.
     5521     * @param   pszFormat       Error message format string.
     5522     * @param   ...             Error message arguments.
     5523     */
     5524    DECLGCCALLBACKMEMBER(int, pfnVMSetRuntimeError,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...));
     5525
     5526    /**
     5527     * Set the VM runtime error message
     5528     *
     5529     * @returns VBox status code.
     5530     * @param   pDevIns         Device instance.
     5531     * @param   fFatal          Whether it is a fatal error or not.
     5532     * @param   pszErrorID      Error ID string.
     5533     * @param   pszFormat       Error message format string.
     5534     * @param   va              Error message arguments.
     5535     */
     5536    DECLGCCALLBACKMEMBER(int, pfnVMSetRuntimeErrorV,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va));
     5537
     5538    /**
    54475539     * Set parameters for pending MMIO patch operation
    54485540     *
     
    55475639     */
    55485640    DECLR0CALLBACKMEMBER(int, pfnVMSetErrorV,(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va));
     5641
     5642    /**
     5643     * Set the VM runtime error message
     5644     *
     5645     * @returns VBox status code.
     5646     * @param   pDevIns         Device instance.
     5647     * @param   fFatal          Whether it is a fatal error or not.
     5648     * @param   pszErrorID      Error ID string.
     5649     * @param   pszFormat       Error message format string.
     5650     * @param   ...             Error message arguments.
     5651     */
     5652    DECLR0CALLBACKMEMBER(int, pfnVMSetRuntimeError,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...));
     5653
     5654    /**
     5655     * Set the VM runtime error message
     5656     *
     5657     * @returns VBox status code.
     5658     * @param   pDevIns         Device instance.
     5659     * @param   fFatal          Whether it is a fatal error or not.
     5660     * @param   pszErrorID      Error ID string.
     5661     * @param   pszFormat       Error message format string.
     5662     * @param   va              Error message arguments.
     5663     */
     5664    DECLR0CALLBACKMEMBER(int, pfnVMSetRuntimeErrorV,(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va));
    55495665
    55505666    /**
     
    56545770/** @def PDMDEV_SET_ERROR
    56555771 * Set the VM error. See PDMDevHlpVMSetError() for printf like message formatting.
    5656  * Don't use any '%' in the error string!
    56575772 */
    56585773#define PDMDEV_SET_ERROR(pDevIns, rc, pszError) \
    5659     PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS, pszError)
     5774    PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS, "%s", pszError)
     5775
     5776/** @def PDMDEV_SET_RUNTIME_ERROR
     5777 * Set the VM runtime error. See PDMDevHlpVMSetRuntimeError() for printf like message formatting.
     5778 */
     5779#define PDMDEV_SET_RUNTIME_ERROR(pDevIns, fFatal, pszErrorID, pszError) \
     5780    PDMDevHlpVMSetRuntimeError(pDevIns, fFatal, pszErrorID, "%s", pszError)
    56605781
    56615782/** @def PDMINS2DATA
     
    61856306#else
    61866307    pDevIns->pDevHlp->pfnVMSetErrorV(pDevIns, rc, RT_SRC_POS_ARGS, pszFormat, va);
     6308#endif
     6309    va_end(va);
     6310    return rc;
     6311}
     6312
     6313/**
     6314 * @copydoc PDMDEVHLP::pfnVMSetRuntimeError
     6315 */
     6316DECLINLINE(int) PDMDevHlpVMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     6317{
     6318    va_list va;
     6319    int rc;
     6320    va_start(va, pszFormat);
     6321#ifdef IN_GC
     6322    rc = pDevIns->pDevHlpGC->pfnVMSetRuntimeErrorV(pDevIns, fFatal, pszErrorID, pszFormat, va);
     6323#elif defined(IN_RING0)
     6324    rc = pDevIns->pDevHlpR0->pfnVMSetRuntimeErrorV(pDevIns, fFatal, pszErrorID, pszFormat, va);
     6325#else
     6326    rc = pDevIns->pDevHlp->pfnVMSetRuntimeErrorV(pDevIns, fFatal, pszErrorID, pszFormat, va);
    61876327#endif
    61886328    va_end(va);
  • trunk/src/VBox/VMM/PDMDevice.cpp

    r2981 r3112  
    108108static DECLCALLBACK(int) pdmR3DevHlp_PCIRegister(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev);
    109109static DECLCALLBACK(int) pdmR3DevHlp_PCIIORegionRegister(PPDMDEVINS pDevIns, int iRegion, uint32_t cbRegion, PCIADDRESSSPACE enmType, PFNPCIIOREGIONMAP pfnCallback);
    110 static DECLCALLBACK(void) pdmR3DevHlp_PCISetConfigCallbacks(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld, 
     110static DECLCALLBACK(void) pdmR3DevHlp_PCISetConfigCallbacks(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld,
    111111                                                            PFNPCICONFIGWRITE pfnWrite, PPFNPCICONFIGWRITE ppfnWriteOld);
    112112static DECLCALLBACK(void) pdmR3DevHlp_PCISetIrq(PPDMDEVINS pDevIns, int iIrq, int iLevel);
     
    120120static DECLCALLBACK(int) pdmR3DevHlp_VMSetError(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, ...);
    121121static DECLCALLBACK(int) pdmR3DevHlp_VMSetErrorV(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va);
     122static DECLCALLBACK(int) pdmR3DevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...);
     123static DECLCALLBACK(int) pdmR3DevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va);
    122124static DECLCALLBACK(bool) pdmR3DevHlp_AssertEMT(PPDMDEVINS pDevIns, const char *pszFile, unsigned iLine, const char *pszFunction);
    123125static DECLCALLBACK(bool) pdmR3DevHlp_AssertOther(PPDMDEVINS pDevIns, const char *pszFile, unsigned iLine, const char *pszFunction);
     
    305307    pdmR3DevHlp_VMSetError,
    306308    pdmR3DevHlp_VMSetErrorV,
     309    pdmR3DevHlp_VMSetRuntimeError,
     310    pdmR3DevHlp_VMSetRuntimeErrorV,
    307311    pdmR3DevHlp_AssertEMT,
    308312    pdmR3DevHlp_AssertOther,
     
    391395    pdmR3DevHlp_VMSetError,
    392396    pdmR3DevHlp_VMSetErrorV,
     397    pdmR3DevHlp_VMSetRuntimeError,
     398    pdmR3DevHlp_VMSetRuntimeErrorV,
    393399    pdmR3DevHlp_AssertEMT,
    394400    pdmR3DevHlp_AssertOther,
     
    743749                /* nop */;
    744750        }
    745         else 
     751        else
    746752            AssertMsgRCReturn(rc, ("Configuration error: reading \"Priority\" for the '%s' device failed rc=%Vrc!\n", szName, rc), rc);
    747753
     
    16981704
    16991705/** @copydoc PDMDEVHLP::pfnPCISetConfigCallbacks */
    1700 static DECLCALLBACK(void) pdmR3DevHlp_PCISetConfigCallbacks(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld, 
     1706static DECLCALLBACK(void) pdmR3DevHlp_PCISetConfigCallbacks(PPDMDEVINS pDevIns, PPCIDEVICE pPciDev, PFNPCICONFIGREAD pfnRead, PPFNPCICONFIGREAD ppfnReadOld,
    17011707                                                            PFNPCICONFIGWRITE pfnWrite, PPFNPCICONFIGWRITE ppfnWriteOld)
    17021708{
     
    21272133
    21282134
     2135/** @copydoc PDMDEVHLP::pfnVMSetRuntimeError */
     2136static DECLCALLBACK(int) pdmR3DevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     2137{
     2138    PDMDEV_ASSERT_DEVINS(pDevIns);
     2139    va_list args;
     2140    va_start(args, pszFormat);
     2141    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMHC, fFatal, pszErrorID, pszFormat, args);
     2142    va_end(args);
     2143    return rc;
     2144}
     2145
     2146
     2147/** @copydoc PDMDEVHLP::pfnVMSetRuntimeErrorV */
     2148static DECLCALLBACK(int) pdmR3DevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va)
     2149{
     2150    PDMDEV_ASSERT_DEVINS(pDevIns);
     2151    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMHC, fFatal, pszErrorID, pszFormat, va);
     2152    return rc;
     2153}
     2154
     2155
    21292156/** @copydoc PDMDEVHLP::pfnAssertEMT */
    21302157static DECLCALLBACK(bool) pdmR3DevHlp_AssertEMT(PPDMDEVINS pDevIns, const char *pszFile, unsigned iLine, const char *pszFunction)
     
    23472374{
    23482375    PDMDEV_ASSERT_DEVINS(pDevIns);
    2349     LogFlow(("pdmR3DevHlp_UTCNow: caller='%s'/%d: pTime=%p\n", 
     2376    LogFlow(("pdmR3DevHlp_UTCNow: caller='%s'/%d: pTime=%p\n",
    23502377             pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pTime));
    23512378
  • trunk/src/VBox/VMM/PDMDriver.cpp

    r2981 r3112  
    7676static DECLCALLBACK(int) pdmR3DrvHlp_VMSetError(PPDMDRVINS pDrvIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, ...);
    7777static DECLCALLBACK(int) pdmR3DrvHlp_VMSetErrorV(PPDMDRVINS pDrvIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va);
     78static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeError(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...);
     79static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeErrorV(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va);
    7880static DECLCALLBACK(bool) pdmR3DrvHlp_AssertEMT(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction);
    7981static DECLCALLBACK(bool) pdmR3DrvHlp_AssertOther(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction);
     
    123125    pdmR3DrvHlp_VMSetError,
    124126    pdmR3DrvHlp_VMSetErrorV,
     127    pdmR3DrvHlp_VMSetRuntimeError,
     128    pdmR3DrvHlp_VMSetRuntimeErrorV,
    125129    pdmR3DrvHlp_PDMQueueCreate,
    126130    pdmR3DrvHlp_PDMPollerRegister,
     
    802806
    803807
     808/** @copydoc PDMDRVHLP::pfnVMSetRuntimeError */
     809static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeError(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     810{
     811    PDMDRV_ASSERT_DRVINS(pDrvIns);
     812    va_list args;
     813    va_start(args, pszFormat);
     814    int rc = VMSetRuntimeErrorV(pDrvIns->Internal.s.pVM, fFatal, pszErrorID, pszFormat, args);
     815    va_end(args);
     816    return rc;
     817}
     818
     819
     820/** @copydoc PDMDRVHLP::pfnVMSetRuntimeErrorV */
     821static DECLCALLBACK(int) pdmR3DrvHlp_VMSetRuntimeErrorV(PPDMDRVINS pDrvIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va)
     822{
     823    PDMDRV_ASSERT_DRVINS(pDrvIns);
     824    int rc = VMSetRuntimeErrorV(pDrvIns->Internal.s.pVM, fFatal, pszErrorID, pszFormat, va);
     825    return rc;
     826}
     827
     828
    804829/** @copydoc PDMDRVHLP::pfnPDMQueueCreate */
    805830static DECLCALLBACK(int) pdmR3DrvHlp_PDMQueueCreate(PPDMDRVINS pDrvIns, RTUINT cbItem, RTUINT cItems, uint32_t cMilliesInterval, PFNPDMQUEUEDRV pfnCallback, PPDMQUEUE *ppQueue)
  • trunk/src/VBox/VMM/VMMGC/PDMGCDevice.cpp

    r2981 r3112  
    8080static DECLCALLBACK(int) pdmGCDevHlp_VMSetError(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, ...);
    8181static DECLCALLBACK(int) pdmGCDevHlp_VMSetErrorV(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va);
     82static DECLCALLBACK(int) pdmGCDevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...);
     83static DECLCALLBACK(int) pdmGCDevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va);
    8284static DECLCALLBACK(int)  pdmGCDevHlp_PATMSetMMIOPatchInfo(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPTR pCachedData);
    8385/** @} */
     
    151153    pdmGCDevHlp_VMSetError,
    152154    pdmGCDevHlp_VMSetErrorV,
     155    pdmGCDevHlp_VMSetRuntimeError,
     156    pdmGCDevHlp_VMSetRuntimeErrorV,
    153157    pdmGCDevHlp_PATMSetMMIOPatchInfo,
    154158    PDM_DEVHLPGC_VERSION
     
    327331    PDMDEV_ASSERT_DEVINS(pDevIns);
    328332    int rc2 = VMSetErrorV(pDevIns->Internal.s.pVMGC, rc, RT_SRC_POS_ARGS, pszFormat, va); Assert(rc2 == rc); NOREF(rc2);
     333    return rc;
     334}
     335
     336
     337/** @copydoc PDMDEVHLPGC::pfnVMSetRuntimeError */
     338static DECLCALLBACK(int) pdmGCDevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     339{
     340    PDMDEV_ASSERT_DEVINS(pDevIns);
     341    va_list args;
     342    va_start(args, pszFormat);
     343    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMGC, fFatal, pszErrorID, pszFormat, args);
     344    va_end(args);
     345    return rc;
     346}
     347
     348
     349/** @copydoc PDMDEVHLPGC::pfnVMSetErrorV */
     350static DECLCALLBACK(int) pdmGCDevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va)
     351{
     352    PDMDEV_ASSERT_DEVINS(pDevIns);
     353    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMGC, fFatal, pszErrorID, pszFormat, va);
    329354    return rc;
    330355}
  • trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp

    r2981 r3112  
    8080static DECLCALLBACK(int) pdmR0DevHlp_VMSetError(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, ...);
    8181static DECLCALLBACK(int) pdmR0DevHlp_VMSetErrorV(PPDMDEVINS pDevIns, int rc, RT_SRC_POS_DECL, const char *pszFormat, va_list va);
     82static DECLCALLBACK(int) pdmR0DevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...);
     83static DECLCALLBACK(int) pdmR0DevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va);
    8284static DECLCALLBACK(int) pdmR0DevHlp_PATMSetMMIOPatchInfo(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, RTGCPTR pCachedData);
    8385/** @} */
     
    151153    pdmR0DevHlp_VMSetError,
    152154    pdmR0DevHlp_VMSetErrorV,
     155    pdmR0DevHlp_VMSetRuntimeError,
     156    pdmR0DevHlp_VMSetRuntimeErrorV,
    153157    pdmR0DevHlp_PATMSetMMIOPatchInfo,
    154158    PDM_DEVHLPR0_VERSION
     
    327331    PDMDEV_ASSERT_DEVINS(pDevIns);
    328332    int rc2 = VMSetErrorV(pDevIns->Internal.s.pVMHC, rc, RT_SRC_POS_ARGS, pszFormat, va); Assert(rc2 == rc); NOREF(rc2);
     333    return rc;
     334}
     335
     336
     337/** @copydoc PDMDEVHLPR0::pfnVMSetRuntimeError */
     338static DECLCALLBACK(int) pdmR0DevHlp_VMSetRuntimeError(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, ...)
     339{
     340    PDMDEV_ASSERT_DEVINS(pDevIns);
     341    va_list args;
     342    va_start(args, pszFormat);
     343    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMHC, fFatal, pszErrorID, pszFormat, args);
     344    va_end(args);
     345    return rc;
     346}
     347
     348
     349/** @copydoc PDMDEVHLPR0::pfnVMSetRuntimeErrorV */
     350static DECLCALLBACK(int) pdmR0DevHlp_VMSetRuntimeErrorV(PPDMDEVINS pDevIns, bool fFatal, const char *pszErrorID, const char *pszFormat, va_list va)
     351{
     352    PDMDEV_ASSERT_DEVINS(pDevIns);
     353    int rc = VMSetRuntimeErrorV(pDevIns->Internal.s.pVMHC, fFatal, pszErrorID, pszFormat, va);
    329354    return rc;
    330355}
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