VirtualBox

Changeset 91812 in vbox for trunk


Ignore:
Timestamp:
Oct 18, 2021 9:43:28 AM (3 years ago)
Author:
vboxsync
Message:

VMM/PDMCritSectRw: Don't preempt while on custom stack. bugref:10124

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSectRw.cpp

    r90940 r91812  
    548548 * @param   fNoVal      No validation records.
    549549 */
     550#ifndef VMM_R0_SWITCH_STACK
    550551static int pdmCritSectRwEnterShared(PVMCC pVM, PPDMCRITSECTRW pThis, int rcBusy, bool fTryOnly,
    551552                                    PCRTLOCKVALSRCPOS pSrcPos, bool fNoVal)
     553#else
     554DECLASM(int) StkBack_pdmCritSectRwEnterShared(PVMCC pVM, PPDMCRITSECTRW pThis, int rcBusy, bool fTryOnly,
     555                                              PCRTLOCKVALSRCPOS pSrcPos, bool fNoVal)
     556#endif
    552557{
    553558    /*
     
    730735    /* not reached */
    731736}
     737#ifdef VMM_R0_SWITCH_STACK
     738decltype(StkBack_pdmCritSectRwEnterShared) pdmCritSectRwEnterShared;
     739#endif
    732740
    733741
     
    884892 *          PDMCritSectRwLeaveExcl, RTCritSectRwLeaveShared.
    885893 */
     894#ifndef VMM_R0_SWITCH_STACK
    886895static int pdmCritSectRwLeaveSharedWorker(PVMCC pVM, PPDMCRITSECTRW pThis, bool fNoVal)
     896#else
     897DECLASM(int) StkBack_pdmCritSectRwLeaveSharedWorker(PVMCC pVM, PPDMCRITSECTRW pThis, bool fNoVal)
     898#endif
    887899{
    888900    /*
     
    10391051    return VINF_SUCCESS;
    10401052}
     1053#ifdef VMM_R0_SWITCH_STACK
     1054decltype(StkBack_pdmCritSectRwLeaveSharedWorker) pdmCritSectRwLeaveSharedWorker;
     1055#endif
    10411056
    10421057
     
    13021317 * @param   fNoVal      No validation records.
    13031318 */
     1319#ifndef VMM_R0_SWITCH_STACK
    13041320static int pdmCritSectRwEnterExcl(PVMCC pVM, PPDMCRITSECTRW pThis, int rcBusy, bool fTryOnly,
    13051321                                  PCRTLOCKVALSRCPOS pSrcPos, bool fNoVal)
     1322#else
     1323DECLASM(int) StkBack_pdmCritSectRwEnterExcl(PVMCC pVM, PPDMCRITSECTRW pThis, int rcBusy, bool fTryOnly,
     1324                                            PCRTLOCKVALSRCPOS pSrcPos, bool fNoVal)
     1325#endif
    13061326{
    13071327    /*
     
    15161536#endif
    15171537}
     1538#ifdef VMM_R0_SWITCH_STACK
     1539decltype(StkBack_pdmCritSectRwEnterExcl) pdmCritSectRwEnterExcl;
     1540#endif
    15181541
    15191542
     
    16701693 * @sa      PDMCritSectRwLeaveShared, RTCritSectRwLeaveExcl.
    16711694 */
     1695#ifndef VMM_R0_SWITCH_STACK
    16721696static int pdmCritSectRwLeaveExclWorker(PVMCC pVM, PPDMCRITSECTRW pThis, bool fNoVal)
     1697#else
     1698DECLASM(int) StkBack_pdmCritSectRwLeaveExclWorker(PVMCC pVM, PPDMCRITSECTRW pThis, bool fNoVal)
     1699#endif
    16731700{
    16741701    /*
     
    19041931#endif
    19051932}
     1933#ifdef VMM_R0_SWITCH_STACK
     1934decltype(StkBack_pdmCritSectRwLeaveExclWorker) pdmCritSectRwLeaveExclWorker;
     1935#endif
    19061936
    19071937
  • trunk/src/VBox/VMM/VMMR0/VMMR0StackBack-darwin.asm

    r91810 r91812  
    2727SUPR0StackWrapperGeneric pdmR0CritSectEnterContendedOnKrnlStk, 6
    2828SUPR0StackWrapperGeneric pdmR0CritSectLeaveSignallingOnKrnlStk, 5
     29SUPR0StackWrapperGeneric pdmCritSectRwEnterShared, 6
     30SUPR0StackWrapperGeneric pdmCritSectRwLeaveSharedWorker, 3
     31SUPR0StackWrapperGeneric pdmCritSectRwEnterExcl, 6
     32SUPR0StackWrapperGeneric pdmCritSectRwLeaveExclWorker, 6
    2933
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