Changeset 17184 in vbox for trunk/src/VBox/HostDrivers/VBoxNetAdp
- Timestamp:
- Feb 27, 2009 12:37:35 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 43470
- Location:
- trunk/src/VBox/HostDrivers/VBoxNetAdp
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/VBoxNetAdp/VBoxNetAdp.c
r17118 r17184 20 20 */ 21 21 22 /** @page pg_netadp VBoxNetAdp - Network Adapter 23 * 24 * This is a kernel module that creates a virtual interface that can be attached 25 * to an internal network. 26 * 27 * In the big picture we're one of the three trunk interface on the internal 28 * network, the one named "TAP Interface": @image html Networking_Overview.gif 29 * 30 */ 31 22 32 /******************************************************************************* 23 33 * Header Files * 24 34 *******************************************************************************/ 25 #define LOG_GROUP LOG_GROUP_NET_ TAP_DRV35 #define LOG_GROUP LOG_GROUP_NET_ADP_DRV 26 36 #include "VBoxNetAdpInternal.h" 27 37 … … 35 45 #include <iprt/uuid.h> 36 46 47 /** r=bird: why is this here in the agnositc code? */ 37 48 #ifndef RT_OS_SOLARIS 38 # include <net/ethernet.h>39 # include <net/if_ether.h>40 # include <net/if_types.h>41 # include <sys/socket.h>42 # include <net/if.h>43 # include <net/if_dl.h>44 # include <sys/errno.h>45 # include <sys/param.h>49 # include <net/ethernet.h> 50 # include <net/if_ether.h> 51 # include <net/if_types.h> 52 # include <sys/socket.h> 53 # include <net/if.h> 54 # include <net/if_dl.h> 55 # include <sys/errno.h> 56 # include <sys/param.h> 46 57 #endif 47 58 … … 79 90 80 91 92 AssertCompileMemberSize(VBOXNETADP, enmState, sizeof(uint32_t)); 81 93 82 94 /** … … 107 119 ASMAtomicWriteU32((uint32_t volatile *)&pThis->enmState, enmNewState); 108 120 } 121 109 122 110 123 /** … … 125 138 RTSpinlockRelease(pThis->hSpinlock, &Tmp); 126 139 } 127 128 140 129 141 … … 147 159 } 148 160 161 149 162 /** 150 163 * Checks and sets the enmState member atomically. … … 161 174 bool fRc = true; /* be optimistic */ 162 175 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 176 163 177 RTSpinlockAcquire(pThis->hSpinlock, &Tmp); 164 enmActualState = vboxNetAdpGetState(pThis); 178 enmActualState = vboxNetAdpGetState(pThis); /** @todo r=bird: ASMAtomicCmpXchgU32()*/ 165 179 if (enmActualState == enmOldState) 166 180 vboxNetAdpSetState(pThis, enmNewState); … … 168 182 fRc = false; 169 183 RTSpinlockRelease(pThis->hSpinlock, &Tmp); 184 170 185 if (fRc) 171 186 Log(("vboxNetAdpCheckAndSetState: pThis=%p, state changed: %d -> %d.\n", pThis, enmOldState, enmNewState)); … … 176 191 177 192 178 193 /** 194 * Finds a instance by its name, the caller does the locking. 195 * 196 * 197 * @returns Pointer to the instance by the given name. NULL if not found. 198 * @param pGlobals The globals. 199 * @param pszName The name of the instance. 200 */ 179 201 static PVBOXNETADP vboxNetAdpFind(PVBOXNETADPGLOBALS pGlobals, const char *pszName) 180 202 { … … 186 208 PVBOXNETADP pThis = &pGlobals->aAdapters[i]; 187 209 RTSpinlockAcquire(pThis->hSpinlock, &Tmp); 188 if ( vboxNetAdpGetState(pThis)189 && !strcmp(pThis->szName, pszName))210 if ( vboxNetAdpGetState(pThis) 211 && !strcmp(pThis->szName, pszName)) 190 212 { 191 213 RTSpinlockRelease(pThis->hSpinlock, &Tmp); … … 196 218 return NULL; 197 219 } 220 198 221 199 222 /** … … 226 249 } 227 250 251 228 252 /** 229 253 * Decrements the busy counter and does idle wakeup. … … 254 278 Assert(cBusy < UINT32_MAX / 2); 255 279 } 280 256 281 257 282 /** … … 285 310 } 286 311 312 287 313 /** 288 314 * Increments busy counter. … … 309 335 } 310 336 337 311 338 /** 312 339 * Checks if receive is possible and increases busy and ref counters if so. … … 335 362 return fCanReceive; 336 363 } 364 337 365 338 366 /** … … 356 384 vboxNetAdpRelease(pThis); 357 385 } 386 358 387 359 388 /** … … 424 453 vboxNetAdpBusy(pThis); 425 454 RTSpinlockRelease(pThis->hSpinlock, &Tmp); 455 426 456 rc = vboxNetAdpPortOsXmit(pThis, pSG, fDst); 427 457 vboxNetAdpIdle(pThis); … … 543 573 Log(("vboxNetAdpPortSetActive: pThis=%p, fActive=%d, state before: %d.\n", pThis, fActive, vboxNetAdpGetState(pThis))); 544 574 RTSpinlockAcquire(pThis->hSpinlock, &Tmp); 575 545 576 fPreviouslyActive = vboxNetAdpGetState(pThis) == kVBoxNetAdpState_Active; 546 577 if (fPreviouslyActive != fActive) … … 558 589 } 559 590 } 591 560 592 RTSpinlockRelease(pThis->hSpinlock, &Tmp); 561 Log(("vboxNetAdpPortSetActive: state after: % d.\n", vboxNetAdpGetState(pThis)));593 Log(("vboxNetAdpPortSetActive: state after: %RTbool.\n", vboxNetAdpGetState(pThis))); 562 594 return fPreviouslyActive; 563 595 } … … 633 665 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 634 666 PVBOXNETADP pThis = &pGlobals->aAdapters[i]; 635 667 636 668 if (vboxNetAdpCheckAndSetState(pThis, kVBoxNetAdpState_Invalid, kVBoxNetAdpState_Transitional)) 637 669 { … … 657 689 int rc = VINF_SUCCESS; 658 690 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 659 691 660 692 RTSpinlockAcquire(pThis->hSpinlock, &Tmp); 661 693 if (vboxNetAdpGetState(pThis) != kVBoxNetAdpState_Available || pThis->cBusy) … … 716 748 } 717 749 750 718 751 /** 719 752 * @copydoc INTNETTRUNKFACTORY::pfnCreateAndConnect 720 753 */ 721 754 static DECLCALLBACK(int) vboxNetAdpFactoryCreateAndConnect(PINTNETTRUNKFACTORY pIfFactory, const char *pszName, 722 PINTNETTRUNKSWPORT pSwitchPort, PINTNETTRUNKIFPORT *ppIfPort, bool fNoPromisc) 723 { 755 PINTNETTRUNKSWPORT pSwitchPort, uint32_t fFlags, 756 PINTNETTRUNKIFPORT *ppIfPort) 757 { 758 PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory)); 724 759 PVBOXNETADP pThis; 725 760 int rc; 726 PVBOXNETADPGLOBALS pGlobals = (PVBOXNETADPGLOBALS)((uint8_t *)pIfFactory - RT_OFFSETOF(VBOXNETADPGLOBALS, TrunkFactory)); 727 728 LogFlow(("vboxNetAdpFactoryCreateAndConnect: pszName=%p:{%s}\n", pszName, pszName)); 761 762 LogFlow(("vboxNetAdpFactoryCreateAndConnect: pszName=%p:{%s} fFlags=%#x\n", pszName, pszName, fFlags)); 729 763 Assert(pGlobals->cFactoryRefs > 0); 764 AssertMsgReturn(fFlags, 765 ("%#x\n", fFlags), VERR_INVALID_PARAMETER); 730 766 731 767 /* … … 749 785 return rc; 750 786 } 787 751 788 752 789 /** … … 956 993 } 957 994 995 958 996 /** 959 997 * Called by the native part when the OS wants the driver to unload. … … 966 1004 { 967 1005 int rc = vboxNetAdpTryDeleteIdc(pGlobals); 968 if (RT_SUCCESS(rc))1006 if (RT_SUCCESS(rc)) 969 1007 { 970 1008 vboxNetAdpDeleteGlobalsBase(pGlobals); … … 1037 1075 if (RT_SUCCESS(rc)) 1038 1076 { 1039 /* @todo REMOVE ME! */1077 #if 1 /** @todo REMOVE ME! */ 1040 1078 PVBOXNETADP pTmp; 1041 1079 rc = vboxNetAdpCreate(&pGlobals->TrunkFactory, &pTmp); 1042 1080 if (RT_FAILURE(rc)) 1043 1081 Log(("Failed to create vboxnet0, rc=%Rrc.\n", rc)); 1082 #endif 1044 1083 Log(("VBoxNetAdp: pSession=%p\n", SUPR0IdcGetSession(&pGlobals->SupDrvIDC))); 1045 1084 return rc; … … 1083 1122 return rc; 1084 1123 } 1124 -
trunk/src/VBox/HostDrivers/VBoxNetAdp/darwin/VBoxNetAdp-darwin.cpp
r17118 r17184 32 32 #undef PVM 33 33 34 #define LOG_GROUP LOG_GROUP_NET_ TAP_DRV34 #define LOG_GROUP LOG_GROUP_NET_ADP_DRV 35 35 #include <VBox/log.h> 36 36 #include <VBox/err.h> -
trunk/src/VBox/HostDrivers/VBoxNetAdp/solaris/VBoxNetAdp-solaris.c
r17025 r17184 27 27 #endif 28 28 29 #define LOG_GROUP LOG_GROUP_NET_ TAP_DRV29 #define LOG_GROUP LOG_GROUP_NET_ADP_DRV 30 30 #include <VBox/log.h> 31 31 #include <VBox/err.h>
Note:
See TracChangeset
for help on using the changeset viewer.