VirtualBox

Ignore:
Timestamp:
Apr 6, 2012 9:05:19 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
77321
Message:

RTSpinlock: Redid the interface, eliminating NoInts and Tmp. Whether a spinlock is interrupt safe or not is now defined at creation time, preventing stupid bugs arrising from calling the wrong acquire and/or release methods somewhere. The saved flags are stored in the spinlock strucutre, eliminating the annoying Tmp variable. Needs testing on each platform before fixing the build burn.

Location:
trunk/src/VBox/HostDrivers/VBoxNetFlt
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/VBoxNetFlt.c

    r33540 r40806  
    375375static bool vboxNetFltMaybeRediscovered(PVBOXNETFLTINS pThis)
    376376{
    377     RTSPINLOCKTMP   Tmp = RTSPINLOCKTMP_INITIALIZER;
    378377    uint64_t        Now;
    379378    bool            fRediscovered;
     
    396395     */
    397396    Now = RTTimeNanoTS();
    398     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     397    RTSpinlockAcquire(pThis->hSpinlock);
    399398
    400399    fRediscovered = !ASMAtomicUoReadBool(&pThis->fDisconnectedFromHost);
     
    405404        ASMAtomicWriteBool(&pThis->fRediscoveryPending, true);
    406405
    407     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     406    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    408407
    409408    /*
     
    499498{
    500499    PVBOXNETFLTINS      pThis = IFPORT_2_VBOXNETFLTINS(pIfPort);
    501     RTSPINLOCKTMP       Tmp   = RTSPINLOCKTMP_INITIALIZER;
    502500    INTNETTRUNKIFSTATE  enmOldTrunkState;
    503501
     
    515513     * Take the lock and change the state.
    516514     */
    517     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     515    RTSpinlockAcquire(pThis->hSpinlock);
    518516    enmOldTrunkState = pThis->enmTrunkState;
    519517    if (enmOldTrunkState != enmState)
    520518        ASMAtomicWriteU32((uint32_t volatile *)&pThis->enmTrunkState, enmState);
    521     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     519    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    522520
    523521    /*
     
    602600{
    603601    PVBOXNETFLTINS pThis = IFPORT_2_VBOXNETFLTINS(pIfPort);
    604     RTSPINLOCKTMP  Tmp   = RTSPINLOCKTMP_INITIALIZER;
    605602
    606603    /*
     
    623620     * Disconnect and release it.
    624621     */
    625     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     622    RTSpinlockAcquire(pThis->hSpinlock);
    626623    vboxNetFltSetState(pThis, kVBoxNetFltInsState_Disconnecting);
    627     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     624    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    628625
    629626    vboxNetFltOsDisconnectIt(pThis);
     
    631628
    632629#ifdef VBOXNETFLT_STATIC_CONFIG
    633     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     630    RTSpinlockAcquire(pThis->hSpinlock);
    634631    vboxNetFltSetState(pThis, kVBoxNetFltInsState_Unconnected);
    635     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     632    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    636633#endif
    637634
     
    814811DECLHIDDEN(bool) vboxNetFltTryRetainBusyActive(PVBOXNETFLTINS pThis)
    815812{
    816     RTSPINLOCKTMP   Tmp = RTSPINLOCKTMP_INITIALIZER;
    817813    uint32_t        cRefs;
    818814    bool            fRc;
     
    834830     * Do the retaining and checking behind the spinlock.
    835831     */
    836     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     832    RTSpinlockAcquire(pThis->hSpinlock);
    837833    fRc = pThis->enmTrunkState == INTNETTRUNKIFSTATE_ACTIVE;
    838834    if (fRc)
     
    844840        AssertMsg(cRefs >= 1 && cRefs < UINT32_MAX / 2, ("%d\n", cRefs)); NOREF(cRefs);
    845841    }
    846     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     842    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    847843
    848844    return fRc;
     
    861857DECLHIDDEN(bool) vboxNetFltTryRetainBusyNotDisconnected(PVBOXNETFLTINS pThis)
    862858{
    863     RTSPINLOCKTMP   Tmp = RTSPINLOCKTMP_INITIALIZER;
    864859    uint32_t        cRefs;
    865860    bool            fRc;
     
    881876     * Do the retaining and checking behind the spinlock.
    882877     */
    883     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     878    RTSpinlockAcquire(pThis->hSpinlock);
    884879    fRc =  pThis->enmTrunkState == INTNETTRUNKIFSTATE_ACTIVE
    885880        || pThis->enmTrunkState == INTNETTRUNKIFSTATE_INACTIVE;
     
    892887        AssertMsg(cRefs >= 1 && cRefs < UINT32_MAX / 2, ("%d\n", cRefs)); NOREF(cRefs);
    893888    }
    894     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     889    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    895890
    896891    return fRc;
     
    10171012    memcpy(pNew->szName, pszName, cchName + 1);
    10181013
    1019     rc = RTSpinlockCreate(&pNew->hSpinlock);
     1014    rc = RTSpinlockCreate(&pNew->hSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxNetFltNewInstance");
    10201015    if (RT_SUCCESS(rc))
    10211016    {
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/darwin/VBoxNetFlt-darwin.cpp

    r38485 r40806  
    227227DECLINLINE(ifnet_t) vboxNetFltDarwinRetainIfNet(PVBOXNETFLTINS pThis)
    228228{
    229     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    230229    ifnet_t pIfNet = NULL;
    231230
     
    233232     * Be careful here to avoid problems racing the detached callback.
    234233     */
    235     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     234    RTSpinlockAcquire(pThis->hSpinlock);
    236235    if (!ASMAtomicUoReadBool(&pThis->fDisconnectedFromHost))
    237236    {
     
    240239            ifnet_reference(pIfNet);
    241240    }
    242     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     241    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    243242
    244243    return pIfNet;
     
    639638{
    640639    PVBOXNETFLTINS pThis = (PVBOXNETFLTINS)pvThis;
    641     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    642640    uint64_t NanoTS = RTTimeSystemNanoTS();
    643641    LogFlow(("vboxNetFltDarwinIffDetached: pThis=%p NanoTS=%RU64 (%d)\n",
     
    658656     * behind it in order to avoid problematic races with the detached callback.
    659657     */
    660     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     658    RTSpinlockAcquire(pThis->hSpinlock);
    661659
    662660    pIfNet = ASMAtomicUoReadPtrT(&pThis->u.s.pIfNet, ifnet_t);
     
    671669    ASMAtomicWriteBool(&pThis->fDisconnectedFromHost, true);
    672670
    673     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     671    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    674672
    675673    if (pIfNet)
     
    916914    }
    917915
    918     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    919     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     916    RTSpinlockAcquire(pThis->hSpinlock);
    920917    ASMAtomicUoWritePtr(&pThis->u.s.pIfNet, pIfNet);
    921     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     918    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    922919
    923920    /*
     
    943940        Assert(err || pIfFilter);
    944941
    945         RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     942        RTSpinlockAcquire(pThis->hSpinlock);
    946943        pIfNet = ASMAtomicUoReadPtrT(&pThis->u.s.pIfNet, ifnet_t);
    947944        if (pIfNet && !err)
     
    951948            pIfNet = NULL; /* don't dereference it */
    952949        }
    953         RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     950        RTSpinlockReleaseNoInts(pThis->hSpinlock);
    954951
    955952        /* Report capabilities. */
     
    11631160void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
    11641161{
    1165     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    11661162    interface_filter_t pIfFilter;
    11671163
     
    11691165     * Carefully obtain the interface filter reference and detach it.
    11701166     */
    1171     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1167    RTSpinlockAcquire(pThis->hSpinlock);
    11721168    pIfFilter = ASMAtomicUoReadPtrT(&pThis->u.s.pIfFilter, interface_filter_t);
    11731169    if (pIfFilter)
    11741170        ASMAtomicUoWriteNullPtr(&pThis->u.s.pIfFilter);
    1175     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1171    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    11761172
    11771173    if (pIfFilter)
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/freebsd/VBoxNetFlt-freebsd.c

    r37423 r40806  
    581581    struct ifnet *ifp;
    582582    node_p node;
    583     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    584583
    585584    VBOXCURVNET_SET_FROM_UCRED();
     
    593592        return VERR_INTERNAL_ERROR;
    594593
    595     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     594    RTSpinlockAcquire(pThis->hSpinlock);
    596595
    597596    ASMAtomicUoWritePtr(&pThis->u.s.ifp, ifp);
     
    610609    TASK_INIT(&pThis->u.s.tskout, 0, vboxNetFltFreeBSDoutput, pThis);
    611610
    612     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     611    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    613612
    614613    NG_NODE_SET_PRIVATE(node, pThis);
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/linux/VBoxNetFlt-linux.c

    r40733 r40806  
    382382{
    383383    PVBOXNETDEVICEOPSOVERRIDE   pOverride;
    384     RTSPINLOCKTMP               Tmp = RTSPINLOCKTMP_INITIALIZER;
    385384
    386385    /* Cancel override if ethtool_ops is missing (host-only case, #5712) */
     
    402401    pOverride->pVBoxNetFlt          = pThis;
    403402
    404     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); /* (this isn't necessary, but so what) */
     403    RTSpinlockAcquire(pThis->hSpinlock); /* (this isn't necessary, but so what) */
    405404    ASMAtomicWritePtr((void * volatile *)&pDev->OVR_OPS, pOverride);
    406405# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29)
    407406    ASMAtomicXchgPtr((void * volatile *)&pDev->hard_start_xmit, vboxNetFltLinuxStartXmitFilter);
    408407# endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) */
    409     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     408    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    410409}
    411410
     
    420419{
    421420    PVBOXNETDEVICEOPSOVERRIDE   pOverride;
    422     RTSPINLOCKTMP               Tmp = RTSPINLOCKTMP_INITIALIZER;
    423 
    424     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     421
     422    RTSpinlockAcquire(pThis->hSpinlock);
    425423    if (!pDev)
    426424        pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
     
    444442    else
    445443        pOverride = NULL;
    446     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     444    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    447445
    448446    if (pOverride)
     
    465463{
    466464#if 0
    467     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    468465    struct net_device *pDev = NULL;
    469466
     
    472469     * Be careful here to avoid problems racing the detached callback.
    473470     */
    474     RTSpinlockAcquire(pThis->hSpinlock, &Tmp);
     471    RTSpinlockAcquire(pThis->hSpinlock);
    475472    if (!ASMAtomicUoReadBool(&pThis->fDisconnectedFromHost))
    476473    {
     
    489486        }
    490487    }
    491     RTSpinlockRelease(pThis->hSpinlock, &Tmp);
     488    RTSpinlockRelease(pThis->hSpinlock);
    492489
    493490    Log(("vboxNetFltLinuxRetainNetDev - done\n"));
     
    13821379        PINTNETTRUNKSWPORT  pSwitchPort;
    13831380        unsigned int        fFeatures;
    1384         RTSPINLOCKTMP       Tmp = RTSPINLOCKTMP_INITIALIZER;
    1385 
    1386         RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1381
     1382        RTSpinlockAcquire(pThis->hSpinlock);
    13871383
    13881384        pSwitchPort = pThis->pSwitchPort; /* this doesn't need to be here, but it doesn't harm. */
     
    13931389            fFeatures = 0;
    13941390
    1395         RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1391        RTSpinlockReleaseNoInts(pThis->hSpinlock);
    13961392
    13971393        if (pThis->pSwitchPort)
     
    14981494static int vboxNetFltLinuxAttachToInterface(PVBOXNETFLTINS pThis, struct net_device *pDev)
    14991495{
    1500     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    15011496    LogFlow(("vboxNetFltLinuxAttachToInterface: pThis=%p (%s)\n", pThis, pThis->szName));
    15021497
     
    15061501    dev_hold(pDev);
    15071502
    1508     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1503    RTSpinlockAcquire(pThis->hSpinlock);
    15091504    ASMAtomicUoWritePtr(&pThis->u.s.pDev, pDev);
    1510     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1505    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    15111506
    15121507    Log(("vboxNetFltLinuxAttachToInterface: Device %p(%s) retained. ref=%d\n",
     
    15461541     * the device notification handle.
    15471542     */
    1548     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1543    RTSpinlockAcquire(pThis->hSpinlock);
    15491544    pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
    15501545    if (pDev)
     
    15541549        pDev = NULL; /* don't dereference it */
    15551550    }
    1556     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1551    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    15571552    Log(("vboxNetFltLinuxAttachToInterface: this=%p: Packet handler installed.\n", pThis));
    15581553
     
    15781573        vboxNetFltLinuxUnhookDev(pThis, pDev);
    15791574#endif
    1580         RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1575        RTSpinlockAcquire(pThis->hSpinlock);
    15811576        ASMAtomicUoWriteNullPtr(&pThis->u.s.pDev);
    1582         RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1577        RTSpinlockReleaseNoInts(pThis->hSpinlock);
    15831578        dev_put(pDev);
    15841579        Log(("vboxNetFltLinuxAttachToInterface: Device %p(%s) released. ref=%d\n",
     
    15991594static int vboxNetFltLinuxUnregisterDevice(PVBOXNETFLTINS pThis, struct net_device *pDev)
    16001595{
    1601     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    1602 
    16031596    Assert(!pThis->fDisconnectedFromHost);
    16041597
     
    16071600#endif
    16081601
    1609     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1602    RTSpinlockAcquire(pThis->hSpinlock);
    16101603    ASMAtomicWriteBool(&pThis->u.s.fRegistered, false);
    16111604    ASMAtomicWriteBool(&pThis->fDisconnectedFromHost, true);
    16121605    ASMAtomicUoWriteNullPtr(&pThis->u.s.pDev);
    1613     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1606    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    16141607
    16151608    dev_remove_pack(&pThis->u.s.PacketType);
     
    19021895    struct net_device  *pDev;
    19031896    bool                fRegistered;
    1904     RTSPINLOCKTMP       Tmp = RTSPINLOCKTMP_INITIALIZER;
    19051897
    19061898#ifdef VBOXNETFLT_WITH_HOST2WIRE_FILTER
     
    19131905     *        ways. */
    19141906
    1915     RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1907    RTSpinlockAcquire(pThis->hSpinlock);
    19161908    pDev = ASMAtomicUoReadPtrT(&pThis->u.s.pDev, struct net_device *);
    19171909    fRegistered = ASMAtomicUoReadBool(&pThis->u.s.fRegistered);
    1918     RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1910    RTSpinlockReleaseNoInts(pThis->hSpinlock);
    19191911
    19201912    if (fRegistered)
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/solaris/VBoxNetFlt-solaris.c

    r40231 r40806  
    10811081             * the promiscuous OFF acknowledgement case).
    10821082             */
    1083             RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    1084             RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     1083            RTSpinlockAcquire(pThis->hSpinlock);
    10851084            const bool fActive = pThis->enmTrunkState == INTNETTRUNKIFSTATE_ACTIVE;
    10861085            vboxNetFltRetain(pThis, true /* fBusy */);
    1087             RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     1086            RTSpinlockReleaseNoInts(pThis->hSpinlock);
    10881087
    10891088            vboxnetflt_promisc_stream_t *pPromiscStream = (vboxnetflt_promisc_stream_t *)pStream;
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltM-win.cpp

    r36184 r40806  
    132132DECLHIDDEN(NDIS_STATUS) vboxNetFltWinMpDoDeinitialization(PVBOXNETFLTINS pNetFlt)
    133133{
    134     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    135134    uint64_t NanoTS = RTTimeSystemNanoTS();
    136135
    137136    Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.MpState) == kVBoxNetDevOpState_Initialized);
    138137
    139     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     138    RTSpinlockAcquire(pNetFlt->hSpinlock);
    140139    ASMAtomicUoWriteBool(&pNetFlt->fDisconnectedFromHost, true);
    141140    ASMAtomicUoWriteBool(&pNetFlt->fRediscoveryPending, false);
     
    144143    vboxNetFltWinSetOpState(&pNetFlt->u.s.WinIf.MpState, kVBoxNetDevOpState_Deinitializing);
    145144
    146     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     145    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    147146
    148147    vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.MpState);
     
    505504static UINT vboxNetFltWinMpRequestStatePrep(PVBOXNETFLTINS pNetFlt, NDIS_STATUS *pStatus)
    506505{
    507     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    508 
    509506    Assert(!pNetFlt->u.s.WinIf.StateFlags.fRequestInfo);
    510507
     
    516513    }
    517514
    518     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     515    RTSpinlockAcquire(pNetFlt->hSpinlock);
    519516    Assert(!pNetFlt->u.s.WinIf.StateFlags.fRequestInfo);
    520517    if (vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.PtState) > kVBoxNetDevOpState_Initialized /* protocol unbind in progress */
    521518            || vboxNetFltWinGetPowerState(&pNetFlt->u.s.WinIf.MpState) > NdisDeviceStateD0)
    522519    {
    523         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     520        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    524521        *pStatus = NDIS_STATUS_FAILURE;
    525522        return 0;
     
    530527    {
    531528        pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS | VBOXNDISREQUEST_QUEUED;
    532         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     529        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    533530        *pStatus = NDIS_STATUS_PENDING;
    534531        return VBOXNDISREQUEST_INPROGRESS | VBOXNDISREQUEST_QUEUED;
     
    537534    if (pNetFlt->u.s.WinIf.StateFlags.fStandBy)
    538535    {
    539         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     536        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    540537        *pStatus = NDIS_STATUS_FAILURE;
    541538        return 0;
     
    544541    pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS;
    545542
    546     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     543    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    547544
    548545    *pStatus = NDIS_STATUS_SUCCESS;
     
    776773{
    777774    PVBOXNETFLTINS pNetFlt = (PVBOXNETFLTINS)MiniportAdapterContext;
    778     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    779775    NDIS_STATUS Status = NDIS_STATUS_FAILURE;
    780776
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltM-win.h

    r36207 r40806  
    2626DECLHIDDEN(NDIS_STATUS) vboxNetFltWinMpDoInitialization(PVBOXNETFLTINS pThis, NDIS_HANDLE hMiniportAdapter, NDIS_HANDLE hWrapperConfigurationContext);
    2727DECLHIDDEN(NDIS_STATUS) vboxNetFltWinMpDoDeinitialization(PVBOXNETFLTINS pThis);
     28
    2829#else
     30
    2931DECLHIDDEN(NDIS_STATUS) vboxNetFltWinMpInitializeDevideInstance(PVBOXNETFLTINS pThis);
    3032DECLHIDDEN(bool) vboxNetFltWinMpDeInitializeDeviceInstance(PVBOXNETFLTINS pThis, PNDIS_STATUS pStatus);
     33
    3134DECLINLINE(VOID) vboxNetFltWinMpRequestStateComplete(PVBOXNETFLTINS pNetFlt)
    3235{
    33     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    34     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     36    RTSpinlockAcquire(pNetFlt->hSpinlock);
    3537    pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = 0;
    36     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     38    RTSpinlockRelease(pNetFlt->hSpinlock);
    3739}
     40
    3841DECLHIDDEN(NDIS_STATUS) vboxNetFltWinMpRequestPost(PVBOXNETFLTINS pNetFlt);
    3942#endif
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltP-win.cpp

    r36184 r40806  
    162162static void vboxNetFltWinPtRequestsWaitComplete(PVBOXNETFLTINS pNetFlt)
    163163{
    164     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    165 
    166164    /* wait for request to complete */
    167165    while (vboxNetFltWinAtomicUoReadWinState(pNetFlt->u.s.WinIf.StateFlags).fRequestInfo == VBOXNDISREQUEST_INPROGRESS)
     
    173171     * If the below miniport is going to low power state, complete the queued request
    174172     */
    175     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     173    RTSpinlockAcquire(pNetFlt->hSpinlock);
    176174    if (pNetFlt->u.s.WinIf.StateFlags.fRequestInfo & VBOXNDISREQUEST_QUEUED)
    177175    {
    178176        /* mark the request as InProgress before posting it to RequestComplete */
    179177        pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS;
    180         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     178        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    181179        vboxNetFltWinPtRequestComplete(pNetFlt, &pNetFlt->u.s.WinIf.PassDownRequest, NDIS_STATUS_FAILURE);
    182180    }
    183181    else
    184182    {
    185         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     183        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    186184    }
    187185}
     
    190188{
    191189    NDIS_STATUS Status;
    192     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    193190    uint64_t NanoTS = RTTimeSystemNanoTS();
    194191    int cPPUsage;
     
    200197    Assert(vboxNetFltWinGetOpState(&pNetFlt->u.s.WinIf.PtState) == kVBoxNetDevOpState_Initialized);
    201198
    202     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     199    RTSpinlockAcquire(pNetFlt->hSpinlock);
    203200
    204201    ASMAtomicUoWriteBool(&pNetFlt->fDisconnectedFromHost, true);
     
    212209    }
    213210
    214     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     211    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    215212
    216213    vboxNetFltWinPtRequestsWaitComplete(pNetFlt);
     
    14001397DECLHIDDEN(bool) vboxNetFltWinPtCloseInterface(PVBOXNETFLTINS pNetFlt, PNDIS_STATUS pStatus)
    14011398{
    1402     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    1403 
    1404     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     1399    RTSpinlockAcquire(pNetFlt->hSpinlock);
    14051400
    14061401    if (pNetFlt->u.s.WinIf.StateFlags.fInterfaceClosing)
    14071402    {
    1408         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1403        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14091404        Assert(0);
    14101405        return false;
     
    14121407    if (pNetFlt->u.s.WinIf.hBinding == NULL)
    14131408    {
    1414         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1409        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14151410        Assert(0);
    14161411        return false;
     
    14181413
    14191414    pNetFlt->u.s.WinIf.StateFlags.fInterfaceClosing = TRUE;
    1420     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1415    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14211416
    14221417    NdisResetEvent(&pNetFlt->u.s.WinIf.OpenCloseEvent);
     
    14381433{
    14391434    NDIS_DEVICE_POWER_STATE enmPrevPowerState = vboxNetFltWinGetPowerState(&pNetFlt->u.s.WinIf.PtState);
    1440     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    1441 
    1442     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     1435
     1436    RTSpinlockAcquire(pNetFlt->hSpinlock);
    14431437
    14441438    vboxNetFltWinSetPowerState(&pNetFlt->u.s.WinIf.PtState, enmPowerState);
     
    14501444            pNetFlt->u.s.WinIf.StateFlags.fStandBy = TRUE;
    14511445        }
    1452         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1446        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14531447        vboxNetFltWinPtRequestsWaitComplete(pNetFlt);
    14541448        vboxNetFltWinWaitDereference(&pNetFlt->u.s.WinIf.MpState);
     
    14751469        {
    14761470            pNetFlt->u.s.WinIf.StateFlags.fRequestInfo = VBOXNDISREQUEST_INPROGRESS;
    1477             RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1471            RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14781472
    14791473            vboxNetFltWinMpRequestPost(pNetFlt);
     
    14811475        else
    14821476        {
    1483             RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     1477            RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    14841478        }
    14851479    }
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp

    r37161 r40806  
    10591059DECLHIDDEN(void) vboxNetFltWinQuFiniPacketQueue(PVBOXNETFLTINS pInstance)
    10601060{
    1061     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    10621061    PINTNETSG pSG;
    10631062    PPACKET_QUEUE_WORKER pWorker = &pInstance->u.s.PacketQueueWorker;
     
    10651064
    10661065    /* using the pPacketQueueSG as an indicator that the packet queue is initialized */
    1067     RTSpinlockAcquireNoInts((pInstance)->hSpinlock, &Tmp);
     1066    RTSpinlockAcquire((pInstance)->hSpinlock);
    10681067    if (pWorker->pSG)
    10691068    {
    10701069        pSG = pWorker->pSG;
    10711070        pWorker->pSG = NULL;
    1072         RTSpinlockReleaseNoInts((pInstance)->hSpinlock, &Tmp);
     1071        RTSpinlockReleaseNoInts((pInstance)->hSpinlock);
    10731072        KeSetEvent(&pWorker->KillEvent, 0, FALSE);
    10741073
     
    10841083    else
    10851084    {
    1086         RTSpinlockReleaseNoInts((pInstance)->hSpinlock, &Tmp);
     1085        RTSpinlockReleaseNoInts((pInstance)->hSpinlock);
    10871086    }
    10881087}
     
    18451844        USHORT cbAnsiName = pBindToMiniportName->Length;/* the length is is bytes ; *2 ;RtlUnicodeStringToAnsiSize(pBindToMiniportName)*/
    18461845        CREATE_INSTANCE_CONTEXT Context;
    1847         RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    18481846
    18491847# ifndef VBOXNETADP
     
    26112609static int vboxNetFltWinDeleteInstance(PVBOXNETFLTINS pThis)
    26122610{
    2613     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    26142611    LogFlow(("vboxNetFltWinDeleteInstance: pThis=0x%p \n", pThis));
    26152612
     
    26462643DECLHIDDEN(NDIS_STATUS) vboxNetFltWinDetachFromInterface(PVBOXNETFLTINS pNetFlt, bool bOnUnbind)
    26472644{
    2648     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    26492645    NDIS_STATUS Status;
    26502646    int rc;
     
    27872783    if (RT_SUCCESS(rc))
    27882784    {
    2789         RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    27902785        Assert(vboxNetFltWinGetWinIfState(pThis) == kVBoxWinIfState_Disconnected);
    27912786        Assert(vboxNetFltWinGetOpState(&pThis->u.s.WinIf.MpState) == kVBoxNetDevOpState_Deinitialized);
     
    28302825#endif
    28312826                        /* 4. mark as connected */
    2832                         RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp);
     2827                        RTSpinlockAcquire(pThis->hSpinlock);
    28332828                        ASMAtomicUoWriteBool(&pThis->fDisconnectedFromHost, false);
    2834                         RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp);
     2829                        RTSpinlockRelease(pThis->hSpinlock);
    28352830
    28362831                        pAttachInfo->Status = VINF_SUCCESS;
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.h

    r36184 r40806  
    587587DECLINLINE(bool) vboxNetFltWinReferenceWinIfNetFlt(PVBOXNETFLTINS pNetFlt, bool * pbNetFltActive)
    588588{
    589     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    590 
    591     RTSpinlockAcquireNoInts((pNetFlt)->hSpinlock, &Tmp);
     589    RTSpinlockAcquire((pNetFlt)->hSpinlock);
    592590#ifndef VBOXNETADP
    593591    if(!vboxNetFltWinDoReferenceDevices(&pNetFlt->u.s.WinIf.MpState, &pNetFlt->u.s.WinIf.PtState))
     
    596594#endif
    597595    {
    598         RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock, &Tmp);
     596        RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock);
    599597        *pbNetFltActive = false;
    600598        return false;
     
    604602    {
    605603        vboxNetFltWinReferenceModePassThru(pNetFlt);
    606         RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock, &Tmp);
     604        RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock);
    607605        *pbNetFltActive = false;
    608606        return true;
     
    611609    vboxNetFltRetain((pNetFlt), true /* fBusy */);
    612610    vboxNetFltWinReferenceModeNetFlt(pNetFlt);
    613     RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock, &Tmp);
     611    RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock);
    614612
    615613    *pbNetFltActive = true;
     
    619617DECLINLINE(bool) vboxNetFltWinIncReferenceWinIfNetFlt(PVBOXNETFLTINS pNetFlt, uint32_t v, bool *pbNetFltActive)
    620618{
    621     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    622619    uint32_t i;
    623620
     
    629626    }
    630627
    631     RTSpinlockAcquireNoInts((pNetFlt)->hSpinlock, &Tmp);
     628    RTSpinlockAcquire((pNetFlt)->hSpinlock);
    632629#ifndef VBOXNETADP
    633630    if(!vboxNetFltWinDoIncReferenceDevices(&pNetFlt->u.s.WinIf.MpState, &pNetFlt->u.s.WinIf.PtState, v))
     
    636633#endif
    637634    {
    638         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     635        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    639636        *pbNetFltActive = false;
    640637        return false;
     
    645642        vboxNetFltWinIncReferenceModePassThru(pNetFlt, v);
    646643
    647         RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock, &Tmp);
     644        RTSpinlockReleaseNoInts((pNetFlt)->hSpinlock);
    648645        *pbNetFltActive = false;
    649646        return true;
     
    654651    vboxNetFltWinIncReferenceModeNetFlt(pNetFlt, v);
    655652
    656     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     653    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    657654
    658655    /* we have marked it as busy, so can do the res references outside the lock */
     
    705702DECLINLINE(bool) vboxNetFltWinIncReferenceWinIf(PVBOXNETFLTINS pNetFlt, uint32_t v)
    706703{
    707     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    708 
    709704    Assert(v);
    710705    if(!v)
     
    713708    }
    714709
    715     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     710    RTSpinlockAcquire(pNetFlt->hSpinlock);
    716711#ifdef VBOXNETADP
    717712    if(vboxNetFltWinDoIncReferenceDevice(&pNetFlt->u.s.WinIf.MpState, v))
     
    720715#endif
    721716    {
    722         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     717        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    723718        return true;
    724719    }
    725720
    726     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     721    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    727722    return false;
    728723}
     
    730725DECLINLINE(bool) vboxNetFltWinReferenceWinIf(PVBOXNETFLTINS pNetFlt)
    731726{
    732     RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;
    733     RTSpinlockAcquireNoInts(pNetFlt->hSpinlock, &Tmp);
     727    RTSpinlockAcquire(pNetFlt->hSpinlock);
    734728#ifdef VBOXNETADP
    735729    if(vboxNetFltWinDoReferenceDevice(&pNetFlt->u.s.WinIf.MpState))
     
    738732#endif
    739733    {
    740         RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     734        RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    741735        return true;
    742736    }
    743737
    744     RTSpinlockReleaseNoInts(pNetFlt->hSpinlock, &Tmp);
     738    RTSpinlockReleaseNoInts(pNetFlt->hSpinlock);
    745739    return false;
    746740}
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