VirtualBox

Changeset 90329 in vbox


Ignore:
Timestamp:
Jul 26, 2021 12:47:26 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145892
Message:

PDMDrvHlp: Put the PDMCritSect API into driver helpers just like we've got for devices. bugref:10074

Location:
trunk
Files:
4 edited

Legend:

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

    r89949 r90329  
    647647    DECLRCCALLBACKMEMBER(bool, pfnAssertOther,(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction));
    648648
     649    /** @name Exported PDM Critical Section Functions
     650     * @{ */
     651    DECLRCCALLBACKMEMBER(int,      pfnCritSectEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy));
     652    DECLRCCALLBACKMEMBER(int,      pfnCritSectEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     653    DECLRCCALLBACKMEMBER(int,      pfnCritSectTryEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     654    DECLRCCALLBACKMEMBER(int,      pfnCritSectTryEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     655    DECLRCCALLBACKMEMBER(int,      pfnCritSectLeave,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     656    DECLRCCALLBACKMEMBER(bool,     pfnCritSectIsOwner,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     657    DECLRCCALLBACKMEMBER(bool,     pfnCritSectIsInitialized,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     658    DECLRCCALLBACKMEMBER(bool,     pfnCritSectHasWaiters,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     659    DECLRCCALLBACKMEMBER(uint32_t, pfnCritSectGetRecursion,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     660    /** @} */
     661
    649662    /** Just a safety precaution. */
    650663    uint32_t                        u32TheEnd;
    651664} PDMDRVHLPRC;
    652665/** Current PDMDRVHLPRC version number. */
    653 #define PDM_DRVHLPRC_VERSION                    PDM_VERSION_MAKE(0xf0f9, 3, 0)
     666#define PDM_DRVHLPRC_VERSION                    PDM_VERSION_MAKE(0xf0f9, 4, 0)
    654667
    655668
     
    738751    DECLR0CALLBACKMEMBER(bool, pfnAssertOther,(PPDMDRVINS pDrvIns, const char *pszFile, unsigned iLine, const char *pszFunction));
    739752
     753    /** @name Exported PDM Critical Section Functions
     754     * @{ */
     755    DECLR0CALLBACKMEMBER(int,      pfnCritSectEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy));
     756    DECLR0CALLBACKMEMBER(int,      pfnCritSectEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     757    DECLR0CALLBACKMEMBER(int,      pfnCritSectTryEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     758    DECLR0CALLBACKMEMBER(int,      pfnCritSectTryEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     759    DECLR0CALLBACKMEMBER(int,      pfnCritSectLeave,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     760    DECLR0CALLBACKMEMBER(bool,     pfnCritSectIsOwner,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     761    DECLR0CALLBACKMEMBER(bool,     pfnCritSectIsInitialized,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     762    DECLR0CALLBACKMEMBER(bool,     pfnCritSectHasWaiters,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     763    DECLR0CALLBACKMEMBER(uint32_t, pfnCritSectGetRecursion,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     764    DECLR0CALLBACKMEMBER(int,      pfnCritSectScheduleExitEvent,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, SUPSEMEVENT hEventToSignal));
     765    /** @} */
     766
    740767    /** Just a safety precaution. */
    741768    uint32_t                        u32TheEnd;
    742769} PDMDRVHLPR0;
    743770/** Current DRVHLP version number. */
    744 #define PDM_DRVHLPR0_VERSION                    PDM_VERSION_MAKE(0xf0f8, 3, 0)
     771#define PDM_DRVHLPR0_VERSION                    PDM_VERSION_MAKE(0xf0f8, 4, 0)
    745772
    746773
     
    12641291    DECLR3CALLBACKMEMBER(int, pfnCritSectInit,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, RT_SRC_POS_DECL, const char *pszName));
    12651292
     1293    /** @name Exported PDM Critical Section Functions
     1294     * @{ */
     1295    DECLR3CALLBACKMEMBER(bool,     pfnCritSectYield,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     1296    DECLR3CALLBACKMEMBER(int,      pfnCritSectEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy));
     1297    DECLR3CALLBACKMEMBER(int,      pfnCritSectEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     1298    DECLR3CALLBACKMEMBER(int,      pfnCritSectTryEnter,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     1299    DECLR3CALLBACKMEMBER(int,      pfnCritSectTryEnterDebug,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, RTHCUINTPTR uId, RT_SRC_POS_DECL));
     1300    DECLR3CALLBACKMEMBER(int,      pfnCritSectLeave,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     1301    DECLR3CALLBACKMEMBER(bool,     pfnCritSectIsOwner,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     1302    DECLR3CALLBACKMEMBER(bool,     pfnCritSectIsInitialized,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     1303    DECLR3CALLBACKMEMBER(bool,     pfnCritSectHasWaiters,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     1304    DECLR3CALLBACKMEMBER(uint32_t, pfnCritSectGetRecursion,(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect));
     1305    DECLR3CALLBACKMEMBER(int,      pfnCritSectScheduleExitEvent,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, SUPSEMEVENT hEventToSignal));
     1306    DECLR3CALLBACKMEMBER(int,      pfnCritSectDelete,(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect));
     1307    /** @} */
     1308
    12661309    /**
    12671310     * Call the ring-0 request handler routine of the driver.
     
    13581401} PDMDRVHLPR3;
    13591402/** Current DRVHLP version number. */
    1360 #define PDM_DRVHLPR3_VERSION                    PDM_VERSION_MAKE(0xf0fb, 5, 2)
     1403#define PDM_DRVHLPR3_VERSION                    PDM_VERSION_MAKE(0xf0fb, 6, 0)
    13611404
    13621405#endif /* IN_RING3 */
     
    18371880}
    18381881
     1882#endif /* IN_RING3 */
     1883
     1884/**
     1885 * @copydoc PDMCritSectEnter
     1886 * @param   pDrvIns  The device instance.
     1887 */
     1888DECLINLINE(int) PDMDrvHlpCritSectEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy)
     1889{
     1890    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectEnter(pDrvIns, pCritSect, rcBusy);
     1891}
     1892
     1893/**
     1894 * @copydoc PDMCritSectEnterDebug
     1895 * @param   pDrvIns  The device instance.
     1896 */
     1897DECLINLINE(int) PDMDrvHlpCritSectEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy, RTHCUINTPTR uId, RT_SRC_POS_DECL)
     1898{
     1899    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectEnterDebug(pDrvIns, pCritSect, rcBusy, uId, RT_SRC_POS_ARGS);
     1900}
     1901
     1902/**
     1903 * @copydoc PDMCritSectTryEnter
     1904 * @param   pDrvIns  The device instance.
     1905 */
     1906DECLINLINE(int)      PDMDrvHlpCritSectTryEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1907{
     1908    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectTryEnter(pDrvIns, pCritSect);
     1909}
     1910
     1911/**
     1912 * @copydoc PDMCritSectTryEnterDebug
     1913 * @param   pDrvIns  The device instance.
     1914 */
     1915DECLINLINE(int)      PDMDrvHlpCritSectTryEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, RTHCUINTPTR uId, RT_SRC_POS_DECL)
     1916{
     1917    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectTryEnterDebug(pDrvIns, pCritSect, uId, RT_SRC_POS_ARGS);
     1918}
     1919
     1920/**
     1921 * @copydoc PDMCritSectLeave
     1922 * @param   pDrvIns  The device instance.
     1923 */
     1924DECLINLINE(int)      PDMDrvHlpCritSectLeave(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1925{
     1926    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectLeave(pDrvIns, pCritSect);
     1927}
     1928
     1929/**
     1930 * @copydoc PDMCritSectIsOwner
     1931 * @param   pDrvIns  The device instance.
     1932 */
     1933DECLINLINE(bool)     PDMDrvHlpCritSectIsOwner(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1934{
     1935    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectIsOwner(pDrvIns, pCritSect);
     1936}
     1937
     1938/**
     1939 * @copydoc PDMCritSectIsInitialized
     1940 * @param   pDrvIns  The device instance.
     1941 */
     1942DECLINLINE(bool)     PDMDrvHlpCritSectIsInitialized(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1943{
     1944    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectIsInitialized(pDrvIns, pCritSect);
     1945}
     1946
     1947/**
     1948 * @copydoc PDMCritSectHasWaiters
     1949 * @param   pDrvIns  The device instance.
     1950 */
     1951DECLINLINE(bool)     PDMDrvHlpCritSectHasWaiters(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1952{
     1953    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectHasWaiters(pDrvIns, pCritSect);
     1954}
     1955
     1956/**
     1957 * @copydoc PDMCritSectGetRecursion
     1958 * @param   pDrvIns  The device instance.
     1959 */
     1960DECLINLINE(uint32_t) PDMDrvHlpCritSectGetRecursion(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1961{
     1962    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectGetRecursion(pDrvIns, pCritSect);
     1963}
     1964
     1965#if defined(IN_RING3) || defined(IN_RING0)
     1966/**
     1967 * @copydoc PDMHCCritSectScheduleExitEvent
     1968 * @param   pDrvIns  The device instance.
     1969 */
     1970DECLINLINE(int) PDMDrvHlpCritSectScheduleExitEvent(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, SUPSEMEVENT hEventToSignal)
     1971{
     1972    return pDrvIns->CTX_SUFF(pHlp)->pfnCritSectScheduleExitEvent(pDrvIns, pCritSect, hEventToSignal);
     1973}
     1974#endif
     1975
     1976/* Strict build: Remap the two enter calls to the debug versions. */
     1977#ifdef VBOX_STRICT
     1978# ifdef IPRT_INCLUDED_asm_h
     1979#  define PDMDrvHlpCritSectEnter(pDrvIns, pCritSect, rcBusy) PDMDrvHlpCritSectEnterDebug((pDrvIns), (pCritSect), (rcBusy), (uintptr_t)ASMReturnAddress(), RT_SRC_POS)
     1980#  define PDMDrvHlpCritSectTryEnter(pDrvIns, pCritSect)      PDMDrvHlpCritSectTryEnterDebug((pDrvIns), (pCritSect), (uintptr_t)ASMReturnAddress(), RT_SRC_POS)
     1981# else
     1982#  define PDMDrvHlpCritSectEnter(pDrvIns, pCritSect, rcBusy) PDMDrvHlpCritSectEnterDebug((pDrvIns), (pCritSect), (rcBusy), 0, RT_SRC_POS)
     1983#  define PDMDrvHlpCritSectTryEnter(pDrvIns, pCritSect)      PDMDrvHlpCritSectTryEnterDebug((pDrvIns), (pCritSect), 0, RT_SRC_POS)
     1984# endif
     1985#endif
     1986
     1987#if defined(IN_RING3) || defined(DOXYGEN_RUNNING)
     1988
     1989/**
     1990 * @copydoc PDMR3CritSectDelete
     1991 * @param   pDrvIns  The device instance.
     1992 */
     1993DECLINLINE(int) PDMDrvHlpCritSectDelete(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1994{
     1995    return pDrvIns->pHlpR3->pfnCritSectDelete(pDrvIns, pCritSect);
     1996}
     1997
    18391998/**
    18401999 * @copydoc PDMDRVHLPR3::pfnCallR0
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp

    r87935 r90329  
    290290#else
    291291# ifdef IN_RING0
     292    /*
     293     * In ring-0 context we have to take the special VT-x/AMD-V HM context into
     294     * account when waiting on contended locks.
     295     *
     296     * While we usually (it can be VINF_SUCCESS) have to option via the rcBusy
     297     * parameter of going to back to ring-3 and to re-start the work there, it's
     298     * almost always more efficient to try wait for the lock here.  The rcBusy
     299     * will be used if we encounter an VERR_INTERRUPTED situation though.
     300     *
     301     * We must never block if VMMRZCallRing3Disable is active.
     302     */
     303
    292304    /** @todo If preemption is disabled it means we're in VT-x/AMD-V context
    293305     *        and would be better off switching out of that while waiting for
     
    333345        return pdmR3R0CritSectEnterContended(pCritSect, hNativeSelf, pSrcPos);
    334346#  endif
    335 #endif /* IN_RING0 */
     347# endif /* IN_RING0 */
    336348
    337349    STAM_REL_COUNTER_INC(&pCritSect->s.StatContentionRZLock);
  • trunk/src/VBox/VMM/VMMR0/PDMR0Driver.cpp

    r84071 r90329  
    113113
    114114
     115/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectEnter} */
     116static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy)
     117{
     118    PDMDRV_ASSERT_DRVINS(pDrvIns);
     119    NOREF(pDrvIns);
     120    return PDMCritSectEnter(pCritSect, rcBusy);
     121}
     122
     123
     124/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectEnterDebug} */
     125static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy,
     126                                                             RTHCUINTPTR uId, RT_SRC_POS_DECL)
     127{
     128    PDMDRV_ASSERT_DRVINS(pDrvIns);
     129    NOREF(pDrvIns);
     130    return PDMCritSectEnterDebug(pCritSect, rcBusy, uId, RT_SRC_POS_ARGS);
     131}
     132
     133
     134/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectTryEnter} */
     135static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectTryEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     136{
     137    PDMDRV_ASSERT_DRVINS(pDrvIns);
     138    NOREF(pDrvIns);
     139    return PDMCritSectTryEnter(pCritSect);
     140}
     141
     142
     143/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectTryEnterDebug} */
     144static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectTryEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect,
     145                                                                RTHCUINTPTR uId, RT_SRC_POS_DECL)
     146{
     147    PDMDRV_ASSERT_DRVINS(pDrvIns);
     148    NOREF(pDrvIns);
     149    return PDMCritSectTryEnterDebug(pCritSect, uId, RT_SRC_POS_ARGS);
     150}
     151
     152
     153/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectLeave} */
     154static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectLeave(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     155{
     156    PDMDRV_ASSERT_DRVINS(pDrvIns);
     157    NOREF(pDrvIns);
     158    return PDMCritSectLeave(pCritSect);
     159}
     160
     161
     162/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectIsOwner} */
     163static DECLCALLBACK(bool)     pdmR0DrvHlp_CritSectIsOwner(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     164{
     165    PDMDRV_ASSERT_DRVINS(pDrvIns);
     166    NOREF(pDrvIns);
     167    return PDMCritSectIsOwner(pCritSect);
     168}
     169
     170
     171/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectIsInitialized} */
     172static DECLCALLBACK(bool)     pdmR0DrvHlp_CritSectIsInitialized(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     173{
     174    PDMDRV_ASSERT_DRVINS(pDrvIns);
     175    NOREF(pDrvIns);
     176    return PDMCritSectIsInitialized(pCritSect);
     177}
     178
     179
     180/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectHasWaiters} */
     181static DECLCALLBACK(bool)     pdmR0DrvHlp_CritSectHasWaiters(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     182{
     183    PDMDRV_ASSERT_DRVINS(pDrvIns);
     184    NOREF(pDrvIns);
     185    return PDMCritSectHasWaiters(pCritSect);
     186}
     187
     188
     189/** @interface_method_impl{PDMDRVHLPR0,pfnCritSectGetRecursion} */
     190static DECLCALLBACK(uint32_t) pdmR0DrvHlp_CritSectGetRecursion(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     191{
     192    PDMDRV_ASSERT_DRVINS(pDrvIns);
     193    NOREF(pDrvIns);
     194    return PDMCritSectGetRecursion(pCritSect);
     195}
     196
     197
     198/** @interface_method_impl{PDMDRVHLPR0,pfn} */
     199static DECLCALLBACK(int)      pdmR0DrvHlp_CritSectScheduleExitEvent(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect,
     200                                                                    SUPSEMEVENT hEventToSignal)
     201{
     202    PDMDRV_ASSERT_DRVINS(pDrvIns);
     203    NOREF(pDrvIns);
     204    return PDMHCCritSectScheduleExitEvent(pCritSect, hEventToSignal);
     205}
     206
     207
     208/** @interface_method_impl{PDMDRVHLPR0,pfn} */
     209
     210
    115211/**
    116212 * The Ring-0 Context Driver Helper Callbacks.
     
    125221    pdmR0DrvHlp_AssertEMT,
    126222    pdmR0DrvHlp_AssertOther,
     223    pdmR0DrvHlp_CritSectEnter,
     224    pdmR0DrvHlp_CritSectEnterDebug,
     225    pdmR0DrvHlp_CritSectTryEnter,
     226    pdmR0DrvHlp_CritSectTryEnterDebug,
     227    pdmR0DrvHlp_CritSectLeave,
     228    pdmR0DrvHlp_CritSectIsOwner,
     229    pdmR0DrvHlp_CritSectIsInitialized,
     230    pdmR0DrvHlp_CritSectHasWaiters,
     231    pdmR0DrvHlp_CritSectGetRecursion,
     232    pdmR0DrvHlp_CritSectScheduleExitEvent,
    127233    PDM_DRVHLPRC_VERSION
    128234};
  • trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp

    r89949 r90329  
    17831783}
    17841784
     1785/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectYield} */
     1786static DECLCALLBACK(bool)     pdmR3DrvHlp_CritSectYield(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1787{
     1788    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1789    RT_NOREF(pDrvIns);
     1790    return PDMR3CritSectYield(pDrvIns->Internal.s.pVMR3, pCritSect);
     1791}
     1792
     1793
     1794/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectEnter} */
     1795static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy)
     1796{
     1797    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1798    RT_NOREF(pDrvIns);
     1799    return PDMCritSectEnter(pCritSect, rcBusy);
     1800}
     1801
     1802
     1803/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectEnterDebug} */
     1804static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect, int rcBusy,
     1805                                                             RTHCUINTPTR uId, RT_SRC_POS_DECL)
     1806{
     1807    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1808    RT_NOREF(pDrvIns);
     1809    return PDMCritSectEnterDebug(pCritSect, rcBusy, uId, RT_SRC_POS_ARGS);
     1810}
     1811
     1812
     1813/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectTryEnter} */
     1814static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectTryEnter(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1815{
     1816    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1817    RT_NOREF(pDrvIns);
     1818    return PDMCritSectTryEnter(pCritSect);
     1819}
     1820
     1821
     1822/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectTryEnterDebug} */
     1823static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectTryEnterDebug(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect,
     1824                                                                RTHCUINTPTR uId, RT_SRC_POS_DECL)
     1825{
     1826    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1827    RT_NOREF(pDrvIns);
     1828    return PDMCritSectTryEnterDebug(pCritSect, uId, RT_SRC_POS_ARGS);
     1829}
     1830
     1831
     1832/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectLeave} */
     1833static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectLeave(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1834{
     1835    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1836    RT_NOREF(pDrvIns);
     1837    return PDMCritSectLeave(pCritSect);
     1838}
     1839
     1840
     1841/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectIsOwner} */
     1842static DECLCALLBACK(bool)     pdmR3DrvHlp_CritSectIsOwner(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1843{
     1844    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1845    RT_NOREF(pDrvIns);
     1846    return PDMCritSectIsOwner(pCritSect);
     1847}
     1848
     1849
     1850/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectIsInitialized} */
     1851static DECLCALLBACK(bool)     pdmR3DrvHlp_CritSectIsInitialized(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1852{
     1853    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1854    RT_NOREF(pDrvIns);
     1855    return PDMCritSectIsInitialized(pCritSect);
     1856}
     1857
     1858
     1859/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectHasWaiters} */
     1860static DECLCALLBACK(bool)     pdmR3DrvHlp_CritSectHasWaiters(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1861{
     1862    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1863    RT_NOREF(pDrvIns);
     1864    return PDMCritSectHasWaiters(pCritSect);
     1865}
     1866
     1867
     1868/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectGetRecursion} */
     1869static DECLCALLBACK(uint32_t) pdmR3DrvHlp_CritSectGetRecursion(PPDMDRVINS pDrvIns, PCPDMCRITSECT pCritSect)
     1870{
     1871    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1872    RT_NOREF(pDrvIns);
     1873    return PDMCritSectGetRecursion(pCritSect);
     1874}
     1875
     1876
     1877/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectScheduleExitEvent} */
     1878static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectScheduleExitEvent(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect,
     1879                                                                    SUPSEMEVENT hEventToSignal)
     1880{
     1881    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1882    RT_NOREF(pDrvIns);
     1883    return PDMHCCritSectScheduleExitEvent(pCritSect, hEventToSignal);
     1884}
     1885
     1886
     1887/** @interface_method_impl{PDMDRVHLPR3,pfnCritSectDelete} */
     1888static DECLCALLBACK(int)      pdmR3DrvHlp_CritSectDelete(PPDMDRVINS pDrvIns, PPDMCRITSECT pCritSect)
     1889{
     1890    PDMDRV_ASSERT_DRVINS(pDrvIns);
     1891    RT_NOREF(pDrvIns);
     1892    return PDMR3CritSectDelete(pCritSect);
     1893}
     1894
    17851895
    17861896/** @interface_method_impl{PDMDRVHLPR3,pfnCallR0} */
     
    19412051    pdmR3DrvHlp_LdrGetR0InterfaceSymbols,
    19422052    pdmR3DrvHlp_CritSectInit,
     2053    pdmR3DrvHlp_CritSectYield,
     2054    pdmR3DrvHlp_CritSectEnter,
     2055    pdmR3DrvHlp_CritSectEnterDebug,
     2056    pdmR3DrvHlp_CritSectTryEnter,
     2057    pdmR3DrvHlp_CritSectTryEnterDebug,
     2058    pdmR3DrvHlp_CritSectLeave,
     2059    pdmR3DrvHlp_CritSectIsOwner,
     2060    pdmR3DrvHlp_CritSectIsInitialized,
     2061    pdmR3DrvHlp_CritSectHasWaiters,
     2062    pdmR3DrvHlp_CritSectGetRecursion,
     2063    pdmR3DrvHlp_CritSectScheduleExitEvent,
     2064    pdmR3DrvHlp_CritSectDelete,
    19432065    pdmR3DrvHlp_CallR0,
    19442066    pdmR3DrvHlp_BlkCacheRetain,
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