VirtualBox

Changeset 81406 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Oct 21, 2019 12:30:54 PM (5 years ago)
Author:
vboxsync
Message:

PDM: Enabled PDM task code. Added bunch of new device helper functions. bugref:9218

Location:
trunk/include/VBox/vmm
Files:
3 edited

Legend:

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

    r81382 r81406  
    3030#endif
    3131
     32#include <VBox/vmm/pdmcritsect.h>
    3233#include <VBox/vmm/pdmqueue.h>
    33 #include <VBox/vmm/pdmcritsect.h>
     34#include <VBox/vmm/pdmtask.h>
    3435#ifdef IN_RING3
    3536# include <VBox/vmm/pdmthread.h>
     
    36473648    DECLR3CALLBACKMEMBER(int, pfnDriverDetach,(PPDMDEVINS pDevIns, PPDMDRVINS pDrvIns, uint32_t fFlags));
    36483649
     3650    /** @name Exported PDM Queue Functions
     3651     * @{ */
    36493652    /**
    36503653     * Create a queue.
     
    36603663     * @param   pszName             The queue base name. The instance number will be
    36613664     *                              appended automatically.
    3662      * @param   ppQueue             Where to store the queue handle on success.
     3665     * @param   ppQueue             Where to store the queue pointer on success.
    36633666     * @thread  The emulation thread.
    36643667     * @remarks The device critical section will NOT be entered before calling the
     
    36663669     *          that only one EMT will do queue callbacks at any one time.
    36673670     */
     3671    DECLR3CALLBACKMEMBER(int, pfnQueueCreatePtr,(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     3672                                                 PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName,
     3673                                                 PPDMQUEUE *ppQueue));
     3674
     3675    /**
     3676     * Create a queue.
     3677     *
     3678     * @returns VBox status code.
     3679     * @param   pDevIns             The device instance.
     3680     * @param   cbItem              The size of a queue item.
     3681     * @param   cItems              The number of items in the queue.
     3682     * @param   cMilliesInterval    The number of milliseconds between polling the queue.
     3683     *                              If 0 then the emulation thread will be notified whenever an item arrives.
     3684     * @param   pfnCallback         The consumer function.
     3685     * @param   fRZEnabled          Set if the queue should work in RC and R0.
     3686     * @param   pszName             The queue base name. The instance number will be
     3687     *                              appended automatically.
     3688     * @param   phQueue             Where to store the queue handle on success.
     3689     * @thread  EMT(0)
     3690     * @remarks The device critical section will NOT be entered before calling the
     3691     *          callback.  No locks will be held, but for now it's safe to assume
     3692     *          that only one EMT will do queue callbacks at any one time.
     3693     */
    36683694    DECLR3CALLBACKMEMBER(int, pfnQueueCreate,(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
    3669                                               PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue));
     3695                                              PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName,
     3696                                              PDMQUEUEHANDLE *phQueue));
     3697
     3698    DECLR3CALLBACKMEMBER(PPDMQUEUE, pfnQueueToPtr,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     3699    DECLR3CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnQueueAlloc,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     3700    DECLR3CALLBACKMEMBER(void, pfnQueueInsert,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem));
     3701    DECLR3CALLBACKMEMBER(void, pfnQueueInsertEx,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay));
     3702    DECLR3CALLBACKMEMBER(bool, pfnQueueFlushIfNecessary,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     3703    /** @} */
     3704
     3705    /** @name PDM Task
     3706     * @{ */
     3707    /**
     3708     * Create an asynchronous ring-3 task.
     3709     *
     3710     * @returns VBox status code.
     3711     * @param   pDevIns         The device instance.
     3712     * @param   fFlags          PDMTASK_F_XXX
     3713     * @param   pszName         The function name or similar.  Used for statistics,
     3714     *                          so no slashes.
     3715     * @param   pfnCallback     The task function.
     3716     * @param   pvUser          User argument for the task function.
     3717     * @param   phTask          Where to return the task handle.
     3718     * @thread  EMT(0)
     3719     */
     3720    DECLR3CALLBACKMEMBER(int, pfnTaskCreate,(PPDMDEVINS pDevIns, uint32_t fFlags, const char *pszName,
     3721                                             PFNPDMTASKDEV pfnCallback, void *pvUser, PDMTASKHANDLE *phTask));
     3722    /**
     3723     * Triggers the running the given task.
     3724     *
     3725     * @returns VBox status code.
     3726     * @retval  VINF_ALREADY_POSTED is the task is already pending.
     3727     * @param   pDevIns         The device instance.
     3728     * @param   hTask           The task to trigger.
     3729     * @thread  Any thread.
     3730     */
     3731    DECLR3CALLBACKMEMBER(int, pfnTaskTrigger,(PPDMDEVINS pDevIns, PDMTASKHANDLE hTask));
     3732    /** @} */
     3733
     3734    /** @name SUP Event Semaphore Wrappers (single release / auto reset)
     3735     * These semaphores can be signalled from ring-0.
     3736     * @{ */
     3737    /** @sa SUPSemEventCreate */
     3738    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventCreate,(PPDMDEVINS pDevIns, PSUPSEMEVENT phEvent));
     3739    /** @sa SUPSemEventClose */
     3740    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventClose,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent));
     3741    /** @sa SUPSemEventSignal */
     3742    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventSignal,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent));
     3743    /** @sa SUPSemEventWaitNoResume */
     3744    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventWaitNoResume,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint32_t cMillies));
     3745    /** @sa SUPSemEventWaitNsAbsIntr */
     3746    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventWaitNsAbsIntr,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t uNsTimeout));
     3747    /** @sa SUPSemEventWaitNsRelIntr */
     3748    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventWaitNsRelIntr,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t cNsTimeout));
     3749    /** @sa SUPSemEventGetResolution */
     3750    DECLR3CALLBACKMEMBER(uint32_t, pfnSUPSemEventGetResolution,(PPDMDEVINS pDevIns));
     3751    /** @} */
     3752
     3753    /** @name SUP Multi Event Semaphore Wrappers (multiple release / manual reset)
     3754     * These semaphores can be signalled from ring-0.
     3755     * @{ */
     3756    /** @sa SUPSemEventMultiCreate */
     3757    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiCreate,(PPDMDEVINS pDevIns, PSUPSEMEVENTMULTI phEventMulti));
     3758    /** @sa SUPSemEventMultiClose */
     3759    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiClose,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti));
     3760    /** @sa SUPSemEventMultiSignal */
     3761    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiSignal,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti));
     3762    /** @sa SUPSemEventMultiReset */
     3763    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiReset,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti));
     3764    /** @sa SUPSemEventMultiWaitNoResume */
     3765    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNoResume,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies));
     3766    /** @sa SUPSemEventMultiWaitNsAbsIntr */
     3767    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNsAbsIntr,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t uNsTimeout));
     3768    /** @sa SUPSemEventMultiWaitNsRelIntr */
     3769    DECLR3CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNsRelIntr,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t cNsTimeout));
     3770    /** @sa SUPSemEventMultiGetResolution */
     3771    DECLR3CALLBACKMEMBER(uint32_t, pfnSUPSemEventMultiGetResolution,(PPDMDEVINS pDevIns));
     3772    /** @} */
    36703773
    36713774    /**
     
    50595162    DECLR0CALLBACKMEMBER(uint64_t, pfnTMTimeVirtGetNano,(PPDMDEVINS pDevIns));
    50605163
     5164    /** @name Exported PDM Queue Functions
     5165     * @{ */
     5166    DECLR0CALLBACKMEMBER(PPDMQUEUE, pfnQueueToPtr,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     5167    DECLR0CALLBACKMEMBER(PPDMQUEUEITEMCORE, pfnQueueAlloc,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     5168    DECLR0CALLBACKMEMBER(void, pfnQueueInsert,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem));
     5169    DECLR0CALLBACKMEMBER(void, pfnQueueInsertEx,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay));
     5170    DECLR0CALLBACKMEMBER(bool, pfnQueueFlushIfNecessary,(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue));
     5171    /** @} */
     5172
     5173    /** @name PDM Task
     5174     * @{ */
     5175    /**
     5176     * Triggers the running the given task.
     5177     *
     5178     * @returns VBox status code.
     5179     * @retval  VINF_ALREADY_POSTED is the task is already pending.
     5180     * @param   pDevIns         The device instance.
     5181     * @param   hTask           The task to trigger.
     5182     * @thread  Any thread.
     5183     */
     5184    DECLR0CALLBACKMEMBER(int, pfnTaskTrigger,(PPDMDEVINS pDevIns, PDMTASKHANDLE hTask));
     5185    /** @} */
     5186
     5187    /** @name SUP Event Semaphore Wrappers (single release / auto reset)
     5188     * These semaphores can be signalled from ring-0.
     5189     * @{ */
     5190    /** @sa SUPSemEventSignal */
     5191    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventSignal,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent));
     5192    /** @sa SUPSemEventWaitNoResume */
     5193    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventWaitNoResume,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint32_t cMillies));
     5194    /** @sa SUPSemEventWaitNsAbsIntr */
     5195    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventWaitNsAbsIntr,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t uNsTimeout));
     5196    /** @sa SUPSemEventWaitNsRelIntr */
     5197    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventWaitNsRelIntr,(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t cNsTimeout));
     5198    /** @sa SUPSemEventGetResolution */
     5199    DECLR0CALLBACKMEMBER(uint32_t, pfnSUPSemEventGetResolution,(PPDMDEVINS pDevIns));
     5200    /** @} */
     5201
     5202    /** @name SUP Multi Event Semaphore Wrappers (multiple release / manual reset)
     5203     * These semaphores can be signalled from ring-0.
     5204     * @{ */
     5205    /** @sa SUPSemEventMultiSignal */
     5206    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventMultiSignal,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti));
     5207    /** @sa SUPSemEventMultiReset */
     5208    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventMultiReset,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti));
     5209    /** @sa SUPSemEventMultiWaitNoResume */
     5210    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNoResume,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies));
     5211    /** @sa SUPSemEventMultiWaitNsAbsIntr */
     5212    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNsAbsIntr,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t uNsTimeout));
     5213    /** @sa SUPSemEventMultiWaitNsRelIntr */
     5214    DECLR0CALLBACKMEMBER(int, pfnSUPSemEventMultiWaitNsRelIntr,(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t cNsTimeout));
     5215    /** @sa SUPSemEventMultiGetResolution */
     5216    DECLR0CALLBACKMEMBER(uint32_t, pfnSUPSemEventMultiGetResolution,(PPDMDEVINS pDevIns));
     5217    /** @} */
     5218
    50615219    /**
    50625220     * Gets the NOP critical section.
     
    51425300
    51435301/** Current PDMDEVHLP version number. */
    5144 #define PDM_DEVHLPR0_VERSION                    PDM_VERSION_MAKE(0xffe5, 9, 0)
     5302#define PDM_DEVHLPR0_VERSION                    PDM_VERSION_MAKE(0xffe5, 10, 0)
    51455303
    51465304
     
    67316889
    67326890/**
    6733  * @copydoc PDMDEVHLPR3::pfnQueueCreate
     6891 * @copydoc PDMDEVHLPR3::pfnQueueCreatePtr
    67346892 */
    67356893DECLINLINE(int) PDMDevHlpQueueCreate(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
    67366894                                     PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PPDMQUEUE *ppQueue)
    67376895{
    6738     return pDevIns->pHlpR3->pfnQueueCreate(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, ppQueue);
    6739 }
     6896    return pDevIns->pHlpR3->pfnQueueCreatePtr(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, ppQueue);
     6897}
     6898
     6899/**
     6900 * @copydoc PDMDEVHLPR3::pfnQueueCreate
     6901 */
     6902DECLINLINE(int) PDMDevHlpQueueCreateNew(PPDMDEVINS pDevIns, size_t cbItem, uint32_t cItems, uint32_t cMilliesInterval,
     6903                                        PFNPDMQUEUEDEV pfnCallback, bool fRZEnabled, const char *pszName, PDMQUEUEHANDLE *phQueue)
     6904{
     6905    return pDevIns->pHlpR3->pfnQueueCreate(pDevIns, cbItem, cItems, cMilliesInterval, pfnCallback, fRZEnabled, pszName, phQueue);
     6906}
     6907
     6908#endif /* IN_RING3 */
     6909
     6910/**
     6911 * @copydoc PDMDEVHLPR3::pfnQueueAlloc
     6912 */
     6913DECLINLINE(PPDMQUEUEITEMCORE) PDMDevHlpQueueAlloc(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)
     6914{
     6915    return pDevIns->CTX_SUFF(pHlp)->pfnQueueAlloc(pDevIns, hQueue);
     6916}
     6917
     6918/**
     6919 * @copydoc PDMDEVHLPR3::pfnQueueInsert
     6920 */
     6921DECLINLINE(void) PDMDevHlpQueueInsert(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem)
     6922{
     6923    pDevIns->CTX_SUFF(pHlp)->pfnQueueInsert(pDevIns, hQueue, pItem);
     6924}
     6925
     6926/**
     6927 * @copydoc PDMDEVHLPR3::pfnQueueInsertEx
     6928 */
     6929DECLINLINE(void) PDMDevHlpQueueInsertEx(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue, PPDMQUEUEITEMCORE pItem, uint64_t cNanoMaxDelay)
     6930{
     6931    pDevIns->CTX_SUFF(pHlp)->pfnQueueInsertEx(pDevIns, hQueue, pItem, cNanoMaxDelay);
     6932}
     6933
     6934/**
     6935 * @copydoc PDMDEVHLPR3::pfnQueueFlushIfNecessary
     6936 */
     6937DECLINLINE(bool) PDMDevHlpQueueFlushIfNecessary(PPDMDEVINS pDevIns, PDMQUEUEHANDLE hQueue)
     6938{
     6939    return pDevIns->CTX_SUFF(pHlp)->pfnQueueFlushIfNecessary(pDevIns, hQueue);
     6940}
     6941
     6942#ifdef IN_RING3
     6943/**
     6944 * @copydoc PDMDEVHLPR3::pfnTaskCreate
     6945 */
     6946DECLINLINE(int) PDMDevHlpTaskCreate(PPDMDEVINS pDevIns, uint32_t fFlags, const char *pszName,
     6947                                    PFNPDMTASKDEV pfnCallback, void *pvUser, PDMTASKHANDLE *phTask)
     6948{
     6949    return pDevIns->pHlpR3->pfnTaskCreate(pDevIns, fFlags, pszName, pfnCallback, pvUser, phTask);
     6950}
     6951#endif
     6952
     6953/**
     6954 * @copydoc PDMDEVHLPR3::pfnTaskTrigger
     6955 */
     6956DECLINLINE(int) PDMDevHlpTaskTrigger(PPDMDEVINS pDevIns, PDMTASKHANDLE hTask)
     6957{
     6958    return pDevIns->CTX_SUFF(pHlp)->pfnTaskTrigger(pDevIns, hTask);
     6959}
     6960
     6961#ifdef IN_RING3
     6962
     6963/**
     6964 * @copydoc PDMDEVHLPR3::pfnSUPSemEventCreate
     6965 */
     6966DECLINLINE(int) PDMDevHlpSUPSemEventCreate(PPDMDEVINS pDevIns, PSUPSEMEVENT phEvent)
     6967{
     6968    return pDevIns->pHlpR3->pfnSUPSemEventCreate(pDevIns, phEvent);
     6969}
     6970
     6971/**
     6972 * @copydoc PDMDEVHLPR3::pfnSUPSemEventClose
     6973 */
     6974DECLINLINE(int) PDMDevHlpSUPSemEventClose(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent)
     6975{
     6976    return pDevIns->pHlpR3->pfnSUPSemEventClose(pDevIns, hEvent);
     6977}
     6978
     6979#endif /* IN_RING3 */
     6980
     6981/**
     6982 * @copydoc PDMDEVHLPR3::pfnSUPSemEventSignal
     6983 */
     6984DECLINLINE(int) PDMDevHlpSUPSemEventSignal(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent)
     6985{
     6986    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventSignal(pDevIns, hEvent);
     6987}
     6988
     6989/**
     6990 * @copydoc PDMDEVHLPR3::pfnSUPSemEventWaitNoResume
     6991 */
     6992DECLINLINE(int) PDMDevHlpSUPSemEventWaitNoResume(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint32_t cMillies)
     6993{
     6994    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventWaitNoResume(pDevIns, hEvent, cMillies);
     6995}
     6996
     6997/**
     6998 * @copydoc PDMDEVHLPR3::pfnSUPSemEventWaitNsAbsIntr
     6999 */
     7000DECLINLINE(int) PDMDevHlpSUPSemEventWaitNsAbsIntr(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t uNsTimeout)
     7001{
     7002    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventWaitNsAbsIntr(pDevIns, hEvent, uNsTimeout);
     7003}
     7004
     7005/**
     7006 * @copydoc PDMDEVHLPR3::pfnSUPSemEventWaitNsRelIntr
     7007 */
     7008DECLINLINE(int) PDMDevHlpSUPSemEventWaitNsRelIntr(PPDMDEVINS pDevIns, SUPSEMEVENT hEvent, uint64_t cNsTimeout)
     7009{
     7010    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventWaitNsRelIntr(pDevIns, hEvent, cNsTimeout);
     7011}
     7012
     7013/**
     7014 * @copydoc PDMDEVHLPR3::pfnSUPSemEventGetResolution
     7015 */
     7016DECLINLINE(uint32_t) PDMDevHlpSUPSemEventGetResolution(PPDMDEVINS pDevIns)
     7017{
     7018    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventGetResolution(pDevIns);
     7019}
     7020
     7021#ifdef IN_RING3
     7022
     7023/**
     7024 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiCreate
     7025 */
     7026DECLINLINE(int) PDMDevHlpSUPSemEventMultiCreate(PPDMDEVINS pDevIns, PSUPSEMEVENTMULTI phEventMulti)
     7027{
     7028    return pDevIns->pHlpR3->pfnSUPSemEventMultiCreate(pDevIns, phEventMulti);
     7029}
     7030
     7031/**
     7032 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiClose
     7033 */
     7034DECLINLINE(int) PDMDevHlpSUPSemEventMultiClose(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti)
     7035{
     7036    return pDevIns->pHlpR3->pfnSUPSemEventMultiClose(pDevIns, hEventMulti);
     7037}
     7038
     7039#endif /* IN_RING3 */
     7040
     7041/**
     7042 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiSignal
     7043 */
     7044DECLINLINE(int) PDMDevHlpSUPSemEventMultiSignal(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti)
     7045{
     7046    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiSignal(pDevIns, hEventMulti);
     7047}
     7048
     7049/**
     7050 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiReset
     7051 */
     7052DECLINLINE(int) PDMDevHlpSUPSemEventMultiReset(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti)
     7053{
     7054    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiReset(pDevIns, hEventMulti);
     7055}
     7056
     7057/**
     7058 * @copydoc PDMDEVHLPR3::pfnTaskTrigger
     7059 */
     7060DECLINLINE(int) PDMDevHlpSUPSemEventMultiWaitNoResume(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies)
     7061{
     7062    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiWaitNsRelIntr(pDevIns, hEventMulti, cMillies);
     7063}
     7064
     7065/**
     7066 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiWaitNsAbsIntr
     7067 */
     7068DECLINLINE(int) PDMDevHlpSUPSemEventMultiWaitNsAbsIntr(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t uNsTimeout)
     7069{
     7070    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiWaitNsAbsIntr(pDevIns, hEventMulti, uNsTimeout);
     7071}
     7072
     7073/**
     7074 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiWaitNsRelIntr
     7075 */
     7076DECLINLINE(int) PDMDevHlpSUPSemEventMultiWaitNsRelIntr(PPDMDEVINS pDevIns, SUPSEMEVENTMULTI hEventMulti, uint64_t cNsTimeout)
     7077{
     7078    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiWaitNsRelIntr(pDevIns, hEventMulti, cNsTimeout);
     7079}
     7080
     7081/**
     7082 * @copydoc PDMDEVHLPR3::pfnSUPSemEventMultiGetResolution
     7083 */
     7084DECLINLINE(uint32_t) PDMDevHlpSUPSemEventMultiGetResolution(PPDMDEVINS pDevIns)
     7085{
     7086    return pDevIns->CTX_SUFF(pHlp)->pfnSUPSemEventMultiGetResolution(pDevIns);
     7087}
     7088
     7089#ifdef IN_RING3
    67407090
    67417091/**
  • trunk/include/VBox/vmm/pdmqueue.h

    r76585 r81406  
    3939 */
    4040
    41 /** Pointer to a PDM queue. Also called PDM queue handle. */
     41/** PDM queue handle. */
     42typedef uint64_t PDMQUEUEHANDLE;
     43/** NIL PDM queue handle. */
     44#define NIL_PDMQUEUEHANDLE      UINT64_MAX
     45
     46/** Pointer to a PDM queue. */
    4247typedef struct PDMQUEUE *PPDMQUEUE;
    4348
  • trunk/include/VBox/vmm/pdmtask.h

    r81391 r81406  
    133133} PDMTASKTYPE;
    134134
     135VMMR3_INT_DECL(int) PDMR3TaskCreate(PVM pVM, uint32_t fFlags, const char *pszName, PDMTASKTYPE enmType, void *pvOwner,
     136                                    PFNRT pfnCallback, void *pvUser, PDMTASKHANDLE *phTask);
    135137VMMR3_INT_DECL(int) PDMR3TaskCreateInternal(PVM pVM, uint32_t fFlags, const char *pszName,
    136138                                            PFNPDMTASKINT pfnCallback, void *pvUser, PDMTASKHANDLE *phTask);
    137 VMMR3_INT_DECL(int) PDMR3TaskCreateGeneric(PVM pVM, uint32_t fFlags, const char *pszName, PDMTASKTYPE enmType, void *pvOwner,
    138                                            PFNRT pfnCallback, void *pvUser, PDMTASKHANDLE *phTask);
    139 VMMR3_INT_DECL(int) PDMR3TaskDestroyInternal(PVM pVM, PDMTASKHANDLE hTask);
    140139VMMR3_INT_DECL(int) PDMR3TaskDestroyAllByOwner(PVM pVM, PDMTASKTYPE enmType, void *pvOwner);
    141140VMMR3_INT_DECL(int) PDMR3TaskDestroySpecific(PVM pVM, PDMTASKTYPE enmType, void *pvOwner, PDMTASKHANDLE hTask);
     141VMMR3_INT_DECL(int) PDMR3TaskDestroyInternal(PVM pVM, PDMTASKHANDLE hTask);
    142142
    143 VMM_INT_DECL(int)   PDMTaskTrigger(PVM pVM, PDMTASKTYPE enmType, void *pvOwner, PDMTASKHANDLE hTask);
    144 VMM_INT_DECL(int)   PDMTaskTriggerInternal(PVM pVM, PDMTASKHANDLE hTask);
     143VMM_INT_DECL(int)   PDMTaskTrigger(PVMCC pVM, PDMTASKTYPE enmType, RTR3PTR pvOwner, PDMTASKHANDLE hTask);
     144VMM_INT_DECL(int)   PDMTaskTriggerInternal(PVMCC pVM, PDMTASKHANDLE hTask);
    145145#endif /* VBOX_IN_VMM */
    146146
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