Changeset 28830 in vbox for trunk/src/VBox/HostDrivers/VBoxNetAdp
- Timestamp:
- Apr 27, 2010 2:05:25 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 60746
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetAdp/VBoxNetAdp.c
r28800 r28830 37 37 38 38 #ifdef VBOXANETADP_DO_NOT_USE_NETFLT 39 #error "this code is broken" 39 40 40 41 #include <VBox/sup.h> … … 107 108 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 108 109 Log(("vboxNetAdpSetStateWithLock: pThis=%p, state=%d.\n", pThis, enmNewState)); 109 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);110 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 110 111 vboxNetAdpSetState(pThis, enmNewState); 111 RTSpinlockRelease (pThis->hSpinlock, &Tmp);112 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 112 113 } 113 114 … … 125 126 VBOXNETADPSTATE enmState; 126 127 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 127 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);128 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 128 129 enmState = vboxNetAdpGetState(pThis); 129 RTSpinlockRelease (pThis->hSpinlock, &Tmp);130 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 130 131 Log(("vboxNetAdpGetStateWithLock: pThis=%p, state=%d.\n", pThis, enmState)); 131 132 return enmState; … … 148 149 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 149 150 150 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);151 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 151 152 enmActualState = vboxNetAdpGetState(pThis); /** @todo r=bird: ASMAtomicCmpXchgU32()*/ 152 153 if (enmActualState == enmOldState) … … 154 155 else 155 156 fRc = false; 156 RTSpinlockRelease (pThis->hSpinlock, &Tmp);157 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 157 158 158 159 if (fRc) … … 179 180 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 180 181 PVBOXNETADP pThis = &pGlobals->aAdapters[i]; 181 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);182 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 182 183 if ( vboxNetAdpGetState(pThis) 183 184 && !strcmp(pThis->szName, pszName)) 184 185 { 185 RTSpinlockRelease (pThis->hSpinlock, &Tmp);186 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 186 187 return pThis; 187 188 } 188 RTSpinlockRelease (pThis->hSpinlock, &Tmp);189 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 189 190 } 190 191 return NULL; … … 346 347 AssertPtr(pThis); 347 348 Assert(pThis->MyPort.u32Version == INTNETTRUNKIFPORT_VERSION); 348 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);349 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 349 350 if (vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active) 350 351 { … … 353 354 vboxNetAdpBusy(pThis); 354 355 } 355 RTSpinlockRelease (pThis->hSpinlock, &Tmp);356 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 356 357 Log(("vboxNetAdpPrepareToReceive: fCanReceive=%d.\n", fCanReceive)); 357 358 … … 416 417 * Do a retain/busy, invoke the OS specific code. 417 418 */ 418 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);419 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 419 420 if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Active) 420 421 { 421 RTSpinlockRelease (pThis->hSpinlock, &Tmp);422 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 422 423 Log(("vboxNetAdpReceive: Dropping incoming packet for inactive interface %s.\n", 423 424 pThis->szName)); … … 426 427 vboxNetAdpRetain(pThis); 427 428 vboxNetAdpBusy(pThis); 428 RTSpinlockRelease (pThis->hSpinlock, &Tmp);429 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 429 430 430 431 rc = vboxNetAdpPortOsXmit(pThis, pSG, fDst); … … 504 505 505 506 Log(("vboxNetAdpPortSetActive: pThis=%p, fActive=%d, state before: %d.\n", pThis, fActive, vboxNetAdpGetState(pThis))); 506 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);507 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 507 508 508 509 fPreviouslyActive = vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active; … … 522 523 } 523 524 524 RTSpinlockRelease (pThis->hSpinlock, &Tmp);525 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 525 526 Log(("vboxNetAdpPortSetActive: state after: %RTbool.\n", vboxNetAdpGetState(pThis))); 526 527 return fPreviouslyActive; … … 550 551 * Disconnect and release it. 551 552 */ 552 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);553 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 553 554 //Assert(vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Connected); 554 555 Assert(!pThis->cBusy); 555 556 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Transitional); 556 RTSpinlockRelease (pThis->hSpinlock, &Tmp);557 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 557 558 558 559 vboxNetAdpOsDisconnectIt(pThis); 559 560 pThis->pSwitchPort = NULL; 560 561 561 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);562 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 562 563 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Available); 563 RTSpinlockRelease (pThis->hSpinlock, &Tmp);564 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 564 565 565 566 vboxNetAdpRelease(pThis); … … 606 607 rc = vboxNetAdpOsCreate(pThis, &Mac); 607 608 *ppNew = pThis; 608 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);609 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 609 610 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Available); 610 RTSpinlockRelease (pThis->hSpinlock, &Tmp);611 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 611 612 return rc; 612 613 } … … 622 623 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 623 624 624 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);625 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 625 626 if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Available || pThis->cBusy) 626 627 { 627 RTSpinlockRelease (pThis->hSpinlock, &Tmp);628 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 628 629 return VERR_INTNET_FLT_IF_BUSY; 629 630 } 630 631 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Transitional); 631 RTSpinlockRelease (pThis->hSpinlock, &Tmp);632 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 632 633 vboxNetAdpRelease(pThis); 633 634 634 635 vboxNetAdpOsDestroy(pThis); 635 636 636 RTSpinlockAcquire (pThis->hSpinlock, &Tmp);637 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 637 638 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Invalid); 638 RTSpinlockRelease (pThis->hSpinlock, &Tmp);639 RTSpinlockReleaseNoInts(pThis->hSpinlock, &Tmp); 639 640 640 641 return rc; … … 842 843 pNew->MyPort.pfnRelease = vboxNetAdpPortRelease; 843 844 pNew->MyPort.pfnDisconnectAndRelease= vboxNetAdpPortDisconnectAndRelease; 844 pNew->MyPort.pfnSet Active = vboxNetAdpPortSetActive;845 pNew->MyPort.pfnSetState = vboxNetAdpPortSetState; 845 846 pNew->MyPort.pfnWaitForIdle = vboxNetAdpPortWaitForIdle; 846 pNew->MyPort.pfnGetMacAddress = vboxNetAdpPortGetMacAddress;847 847 pNew->MyPort.pfnXmit = vboxNetAdpPortXmit; 848 848 pNew->MyPort.u32VersionEnd = INTNETTRUNKIFPORT_VERSION;
Note:
See TracChangeset
for help on using the changeset viewer.