VirtualBox

Changeset 90503 in vbox for trunk/include


Ignore:
Timestamp:
Aug 3, 2021 9:22:13 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
146107
Message:

VMMDevTesting,bs3-locking-1: Expanded the locking test port to two ports, incorporating read/write CS and a EMT hold interval. bugref:6695

File:
1 edited

Legend:

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

    r90467 r90503  
    9393 * Writing configures counter action by a thread taking the lock to trigger
    9494 * contention:
    95  *  - Bits 19-0 is the lock hold time in microseconds. Zero disables it.
    96  *  - Bit 31 make the thread poke the EMT(s) prior to releasing the lock.
    97  *  - Bits 30-20 are reserved and must be zero. */
    98 #define VMMDEV_TESTING_IOPORT_LOCKED    (VMMDEV_TESTING_IOPORT_BASE + 6)
     95 *  - bits 15:0: Number of microseconds thread should hold lock.
     96 *  - bits 31:16: Number of microseconds thread should wait before locking
     97 *    again. */
     98#define VMMDEV_TESTING_IOPORT_LOCKED_LO (VMMDEV_TESTING_IOPORT_BASE + 6)
     99/** Take the VMMDev lock in arrival context and return - 1,2,4 RW.
     100 * Writing configures counter action by a thread taking the lock to trigger
     101 * contention:
     102 *  - bits 19:0: Number of kilo (1024) ticks the EMT should hold lock.
     103 *  - bits 25:20: Reserved, must be zero.
     104 *  - bit 26: Thread takes lock in shared mode when set, exclusive when clear.
     105 *  - bit 27: EMT takes lock in shared mode when set, exclusive when clear.
     106 *  - bit 28: Use read/write critical section when set, device section if clear.
     107 *  - bit 29: EMT passes VINF_SUCCESS as rcBusy when set.
     108 *  - bit 30: Makes thread poke all EMTs before release lock.
     109 *  - bit 31: Enables the thread. */
     110#define VMMDEV_TESTING_IOPORT_LOCKED_HI (VMMDEV_TESTING_IOPORT_BASE + 7)
    99111
    100112/** @name Commands.
     
    163175#define VMMDEV_TESTING_NOP_RET                  UINT32_C(0x64726962) /* bird */
    164176
    165 /** @name Locked Control dword
     177/** @name Low and High Locking Control Dwords
    166178 * @{ */
    167 /** Locked Control: Lock hold interval in microseconds. */
    168 #define VMMDEV_TESTING_LOCKED_HOLD_MASK         UINT32_C(0x00003fff)
    169 /** Locked Control: Wait time in microseconds between locking attempts. */
    170 #define VMMDEV_TESTING_LOCKED_WAIT_MASK         UINT32_C(0x0fffc000)
    171 /** Locked Control: Wait time shift count. */
    172 #define VMMDEV_TESTING_LOCKED_WAIT_SHIFT        14
    173 /** Locked Control: Must be zero. */
    174 #define VMMDEV_TESTING_LOCKED_MBZ_MASK          UINT32_C(0x30000000)
    175 /** Locked Control: Take lock with rcBusy set to VINF_SUCCESS.   */
    176 #define VMMDEV_TESTING_LOCKED_BUSY_SUCCESS      UINT32_C(0x40000000)
    177 /** Locked Control: Poke EMT(s) flag.   */
    178 #define VMMDEV_TESTING_LOCKED_POKE              UINT32_C(0x80000000)
     179/** Low Locking Control: Thread lock hold interval in microseconds. */
     180#define VMMDEV_TESTING_LOCKED_LO_HOLD_MASK      UINT32_C(0x0000ffff)
     181/** Low Locking Control: Thread wait time in microseconds between locking
     182 *  attempts. */
     183#define VMMDEV_TESTING_LOCKED_LO_WAIT_MASK      UINT32_C(0xffff0000)
     184/** Low Locking Control: Thread wait time shift count. */
     185#define VMMDEV_TESTING_LOCKED_LO_WAIT_SHIFT     16
     186/** High Locking Control: Kilo (1024) ticks the EMT should hold the lock.  */
     187#define VMMDEV_TESTING_LOCKED_HI_TICKS_MASK     UINT32_C(0x000fffff)
     188/** High Locking Control: Must be zero. */
     189#define VMMDEV_TESTING_LOCKED_HI_MBZ_MASK       UINT32_C(0x03f00000)
     190/** High Locking Control: Thread takes lock in shared mode when set, exclusive
     191 *  when clear.  */
     192#define VMMDEV_TESTING_LOCKED_HI_THREAD_SHARED  UINT32_C(0x04000000)
     193/** High Locking Control: EMT takes lock in shared mode when set, exclusive
     194 *  when clear.  */
     195#define VMMDEV_TESTING_LOCKED_HI_EMT_SHARED     UINT32_C(0x08000000)
     196/** High Locking Control: Use read/write critical section instead of regular. */
     197#define VMMDEV_TESTING_LOCKED_HI_TYPE_RW        UINT32_C(0x10000000)
     198/** High Locking Control: EMT takes lock with rcBusy set to VINF_SUCCESS. */
     199#define VMMDEV_TESTING_LOCKED_HI_BUSY_SUCCESS   UINT32_C(0x20000000)
     200/** High Locking Control: Thread pokes EMTs before releasing lock. */
     201#define VMMDEV_TESTING_LOCKED_HI_POKE           UINT32_C(0x40000000)
     202/** High Locking Control: Thread enabled. */
     203#define VMMDEV_TESTING_LOCKED_HI_ENABLED        UINT32_C(0x80000000)
    179204/** @} */
    180205
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