VirtualBox

Ignore:
Timestamp:
Feb 20, 2014 12:00:58 PM (11 years ago)
Author:
vboxsync
Message:

Addiitions/common/VBoxGuest, VBoxGuestLibR3: add mediation in the guest driver for guest capabilities, mouse status and event filtering.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuestInternal.h

    r50391 r50523  
    158158    /** Spinlock various items in the VBOXGUESTSESSION. */
    159159    RTSPINLOCK                  SessionSpinlock;
     160    /** List of guest sessions (VBOXGUESTSESSION).  We currently traverse this
     161     * but do not search it, so a list data type should be fine.  Use under the
     162     * #SessionSpinlock lock. */
     163    RTLISTANCHOR                SessionList;
    160164#ifdef VBOX_WITH_VRDP_SESSION_HANDLING
    161165    bool                        fVRDPEnabled;
     
    166170    /** Memory balloon information for RTR0MemObjAllocPhysNC(). */
    167171    VBOXGUESTMEMBALLOON         MemBalloon;
    168     /** For each mouse status feature the number of sessions which have
    169      * enabled it.  A feature is enabled globally if at least one session has
    170      * requested it. */
    171     /** @todo can we programmatically determine the size of the array and
    172      * still get the following alignment right? */
    173     uint32_t volatile           acMouseFeatureUsage[32];
    174     /** The mouse feature status matching the counts above.  These are updated
    175      * together inside the session spinlock. */
    176     uint32_t volatile           fMouseStatus;
    177172    /** Counter of number of active ISRs.  Currently used for safely removing
    178173     * the mouse handler callback. */
     
    204199typedef struct VBOXGUESTSESSION
    205200{
     201    /** The list node. */
     202    RTLISTNODE                  ListNode;
    206203#if defined(RT_OS_DARWIN) || defined(RT_OS_FREEBSD) || defined(RT_OS_OS2) || defined(RT_OS_SOLARIS)
    207204    /** Pointer to the next session with the same hash. */
     
    230227     * Used to implement polling.  */
    231228    uint32_t volatile           u32MousePosChangedSeq;
     229    /** VMMDev events requested.  An event type requested in any guest session
     230     * will be added to the host filter.
     231     * Use under the VBOXGUESTDEVEXT#SessionSpinlock lock. */
     232    uint32_t                    fFilterMask;
     233    /** Capabilities supported.  A capability enabled in any guest session will
     234     * be enabled for the host.
     235     * Use under the VBOXGUESTDEVEXT#SessionSpinlock lock. */
     236    uint32_t                    fCapabilities;
    232237    /** Mouse features supported.  A feature enabled in any guest session will
    233      * be enabled for the host. */
    234     uint32_t volatile           fMouseStatus;
     238     * be enabled for the host.
     239     * @note We invert the VMMDEV_MOUSE_GUEST_NEEDS_HOST_CURSOR feature in this
     240     * bitmap.  The logic of this is that the real feature is when the host
     241     * cursor is not needed, and we tell the host it is not needed if any
     242     * session explicitly fails to assert it.  Storing it inverted simplifies
     243     * the checks.
     244     * Use under the VBOXGUESTDEVEXT#SessionSpinlock lock. */
     245    uint32_t                    fMouseStatus;
    235246#ifdef RT_OS_DARWIN
    236247    /** Pointer to the associated org_virtualbox_VBoxGuestClient object. */
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