Changeset 40806 in vbox for trunk/src/VBox/HostDrivers/VBoxNetAdp
- Timestamp:
- Apr 6, 2012 9:05:19 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77321
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetAdp/VBoxNetAdp.c
r38408 r40806 106 106 DECLINLINE(void) vboxNetAdpSetStateWithLock(PVBOXNETADP pThis, VBOXNETADPSTATE enmNewState) 107 107 { 108 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;109 108 Log(("vboxNetAdpSetStateWithLock: pThis=%p, state=%d.\n", pThis, enmNewState)); 110 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);109 RTSpinlockAcquire(pThis->hSpinlock); 111 110 vboxNetAdpSetState(pThis, enmNewState); 112 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);111 RTSpinlockReleaseNoInts(pThis->hSpinlock); 113 112 } 114 113 … … 125 124 { 126 125 VBOXNETADPSTATE enmState; 127 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 128 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 126 RTSpinlockAcquire(pThis->hSpinlock); 129 127 enmState = vboxNetAdpGetState(pThis); 130 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);128 RTSpinlockReleaseNoInts(pThis->hSpinlock); 131 129 Log(("vboxNetAdpGetStateWithLock: pThis=%p, state=%d.\n", pThis, enmState)); 132 130 return enmState; … … 147 145 VBOXNETADPSTATE enmActualState; 148 146 bool fRc = true; /* be optimistic */ 149 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 150 151 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 147 148 RTSpinlockAcquire(pThis->hSpinlock); 152 149 enmActualState = vboxNetAdpGetState(pThis); /** @todo r=bird: ASMAtomicCmpXchgU32()*/ 153 150 if (enmActualState == enmOldState) … … 155 152 else 156 153 fRc = false; 157 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);154 RTSpinlockReleaseNoInts(pThis->hSpinlock); 158 155 159 156 if (fRc) … … 178 175 for (i = 0; i < RT_ELEMENTS(pGlobals->aAdapters); i++) 179 176 { 180 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;181 177 PVBOXNETADP pThis = &pGlobals->aAdapters[i]; 182 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);178 RTSpinlockAcquire(pThis->hSpinlock); 183 179 if ( vboxNetAdpGetState(pThis) 184 180 && !strcmp(pThis->szName, pszName)) 185 181 { 186 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);182 RTSpinlockReleaseNoInts(pThis->hSpinlock); 187 183 return pThis; 188 184 } 189 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);185 RTSpinlockReleaseNoInts(pThis->hSpinlock); 190 186 } 191 187 return NULL; … … 340 336 DECLHIDDEN(bool) vboxNetAdpPrepareToReceive(PVBOXNETADP pThis) 341 337 { 342 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;343 338 bool fCanReceive = false; 344 339 /* … … 347 342 AssertPtr(pThis); 348 343 Assert(pThis->MyPort.u32Version == INTNETTRUNKIFPORT_VERSION); 349 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);344 RTSpinlockAcquire(pThis->hSpinlock); 350 345 if (vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active) 351 346 { … … 354 349 vboxNetAdpBusy(pThis); 355 350 } 356 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);351 RTSpinlockReleaseNoInts(pThis->hSpinlock); 357 352 Log(("vboxNetAdpPrepareToReceive: fCanReceive=%d.\n", fCanReceive)); 358 353 … … 368 363 DECLHIDDEN(void) vboxNetAdpReceive(PVBOXNETADP pThis, PINTNETSG pSG) 369 364 { 370 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;371 365 /* 372 366 * Input validation. … … 401 395 static DECLCALLBACK(int) vboxNetAdpPortXmit(PINTNETTRUNKIFPORT pIfPort, PINTNETSG pSG, uint32_t fDst) 402 396 { 403 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;404 397 PVBOXNETADP pThis = IFPORT_2_VBOXNETADP(pIfPort); 405 398 int rc = VINF_SUCCESS; … … 417 410 * Do a retain/busy, invoke the OS specific code. 418 411 */ 419 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);412 RTSpinlockAcquire(pThis->hSpinlock); 420 413 if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Active) 421 414 { 422 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);415 RTSpinlockReleaseNoInts(pThis->hSpinlock); 423 416 Log(("vboxNetAdpReceive: Dropping incoming packet for inactive interface %s.\n", 424 417 pThis->szName)); … … 427 420 vboxNetAdpRetain(pThis); 428 421 vboxNetAdpBusy(pThis); 429 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);422 RTSpinlockReleaseNoInts(pThis->hSpinlock); 430 423 431 424 rc = vboxNetAdpPortOsXmit(pThis, pSG, fDst); … … 494 487 { 495 488 bool fPreviouslyActive; 496 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;497 489 PVBOXNETADP pThis = IFPORT_2_VBOXNETADP(pIfPort); 498 490 … … 505 497 506 498 Log(("vboxNetAdpPortSetActive: pThis=%p, fActive=%d, state before: %d.\n", pThis, fActive, vboxNetAdpGetState(pThis))); 507 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);499 RTSpinlockAcquire(pThis->hSpinlock); 508 500 509 501 fPreviouslyActive = vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active; … … 523 515 } 524 516 525 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);517 RTSpinlockReleaseNoInts(pThis->hSpinlock); 526 518 Log(("vboxNetAdpPortSetActive: state after: %RTbool.\n", vboxNetAdpGetState(pThis))); 527 519 return fPreviouslyActive; … … 535 527 { 536 528 PVBOXNETADP pThis = IFPORT_2_VBOXNETADP(pIfPort); 537 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;538 529 539 530 /* … … 551 542 * Disconnect and release it. 552 543 */ 553 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);544 RTSpinlockAcquire(pThis->hSpinlock); 554 545 //Assert(vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Connected); 555 546 Assert(!pThis->cBusy); 556 547 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Transitional); 557 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);548 RTSpinlockReleaseNoInts(pThis->hSpinlock); 558 549 559 550 vboxNetAdpOsDisconnectIt(pThis); 560 551 pThis->pSwitchPort = NULL; 561 552 562 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);553 RTSpinlockAcquire(pThis->hSpinlock); 563 554 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Available); 564 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);555 RTSpinlockReleaseNoInts(pThis->hSpinlock); 565 556 566 557 vboxNetAdpRelease(pThis); … … 590 581 int vboxNetAdpCreate(PINTNETTRUNKFACTORY pIfFactory, PVBOXNETADP *ppNew) 591 582 { 583 PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory)); 584 unsigned i; 592 585 int rc; 593 unsigned i;594 PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory));595 586 596 587 for (i = 0; i < RT_ELEMENTS(pGlobals->aAdapters); i++) 597 588 { 598 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER;599 589 PVBOXNETADP pThis = &pGlobals->aAdapters[i]; 600 590 … … 608 598 rc = vboxNetAdpOsCreate(pThis, &Mac); 609 599 *ppNew = pThis; 610 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 600 601 RTSpinlockAcquire(pThis->hSpinlock); 611 602 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Available); 612 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);603 RTSpinlockReleaseNoInts(pThis->hSpinlock); 613 604 return rc; 614 605 } … … 622 613 { 623 614 int rc = VINF_SUCCESS; 624 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 625 626 RTSpinlockAcquireNoInts(pThis->hSpinlock, &Tmp); 615 616 RTSpinlockAcquire(pThis->hSpinlock); 627 617 if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Available || pThis->cBusy) 628 618 { 629 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);619 RTSpinlockReleaseNoInts(pThis->hSpinlock); 630 620 return VERR_INTNET_FLT_IF_BUSY; 631 621 } 632 622 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Transitional); 633 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);623 RTSpinlockReleaseNoInts(pThis->hSpinlock); 634 624 vboxNetAdpRelease(pThis); 635 625 636 626 vboxNetAdpOsDestroy(pThis); 637 627 638 RTSpinlockAcquire NoInts(pThis->hSpinlock, &Tmp);628 RTSpinlockAcquire(pThis->hSpinlock); 639 629 vboxNetAdpSetState(pThis, kVBoxNetAdpState_Invalid); 640 RTSpinlockReleaseNoInts(pThis->hSpinlock , &Tmp);630 RTSpinlockReleaseNoInts(pThis->hSpinlock); 641 631 642 632 return rc; … … 856 846 pNew->hEventIdle = NIL_RTSEMEVENT; 857 847 858 rc = RTSpinlockCreate(&pNew->hSpinlock );848 rc = RTSpinlockCreate(&pNew->hSpinlock, RTSPINLOCK_FLAGS_INTERRUPT_SAFE, "VBoxNetAdptSlotCreate"); 859 849 if (RT_SUCCESS(rc)) 860 850 {
Note:
See TracChangeset
for help on using the changeset viewer.