Changeset 40652 in vbox
- Timestamp:
- Mar 26, 2012 4:36:16 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/log.h
r40383 r40652 260 260 /** The common network service group */ 261 261 LOG_GROUP_NET_SERVICE, 262 /** Network traffic shaper driver group. */ 263 LOG_GROUP_NET_SHAPER, 262 264 /** PATM group. */ 263 265 LOG_GROUP_PATM, … … 491 493 "NET_FLT_DRV", \ 492 494 "NET_SERVICE", \ 495 "NET_SHAPER", \ 493 496 "PATM", \ 494 497 "PDM", \ -
trunk/include/VBox/vmm/mm.h
r39078 r40652 101 101 MM_TAG_PDM_USB_USER, 102 102 MM_TAG_PDM_LUN, 103 #ifdef VBOX_WITH_NETSHAPER 104 MM_TAG_PDM_NET_SHAPER, 105 #endif /* VBOX_WITH_NETSHAPER */ 103 106 MM_TAG_PDM_QUEUE, 104 107 MM_TAG_PDM_THREAD, -
trunk/include/VBox/vmm/pdmdrv.h
r40416 r40652 34 34 #include <VBox/vmm/pdmcommon.h> 35 35 #include <VBox/vmm/pdmasynccompletion.h> 36 #ifdef VBOX_WITH_NETSHAPER 37 #include <VBox/vmm/pdmnetshaper.h> 38 #endif /* VBOX_WITH_NETSHAPER */ 36 39 #include <VBox/vmm/pdmblkcache.h> 37 40 #include <VBox/vmm/tm.h> … … 1165 1168 const char *pszDesc)); 1166 1169 1170 #ifdef VBOX_WITH_NETSHAPER 1171 /** 1172 * Attaches network filter driver to a bandwidth group. 1173 * 1174 * @returns VBox status code. 1175 * @param pDrvIns The driver instance. 1176 * @param pcszBwGroup Name of the bandwidth group to attach to. 1177 * @param pFilter Pointer to the filter we attach. 1178 */ 1179 DECLR3CALLBACKMEMBER(int, pfnNetShaperAttach,(PPDMDRVINS pDrvIns, const char *pszBwGroup, 1180 PPDMNSFILTER pFilter)); 1181 1182 1183 /** 1184 * Detaches network filter driver to a bandwidth group. 1185 * 1186 * @returns VBox status code. 1187 * @param pDrvIns The driver instance. 1188 * @param pFilter Pointer to the filter we attach. 1189 */ 1190 DECLR3CALLBACKMEMBER(int, pfnNetShaperDetach,(PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter)); 1191 #endif /* VBOX_WITH_NETSHAPER */ 1192 1167 1193 1168 1194 /** … … 1704 1730 # endif 1705 1731 1732 # ifdef VBOX_WITH_NETSHAPER 1733 /** 1734 * @copydoc PDMDRVHLP::pfnNetShaperAttach 1735 */ 1736 DECLINLINE(int) PDMDrvHlpNetShaperAttach(PPDMDRVINS pDrvIns, const char *pcszBwGroup, PPDMNSFILTER pFilter) 1737 { 1738 return pDrvIns->pHlpR3->pfnNetShaperAttach(pDrvIns, pcszBwGroup, pFilter); 1739 } 1740 1741 /** 1742 * @copydoc PDMDRVHLP::pfnNetShaperDetach 1743 */ 1744 DECLINLINE(int) PDMDrvHlpNetShaperDetach(PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter) 1745 { 1746 return pDrvIns->pHlpR3->pfnNetShaperDetach(pDrvIns, pFilter); 1747 } 1748 # endif 1749 1706 1750 /** 1707 1751 * @copydoc PDMDRVHLP::pfnCritSectInit -
trunk/src/VBox/Devices/Makefile.kmk
r40638 r40652 391 391 endif 392 392 393 ifdef VBOX_WITH_NETSHAPER 394 VBoxDD_DEFS += VBOX_WITH_NETSHAPER 395 VBoxDD_SOURCES += \ 396 Network/DrvNetShaper.cpp 397 endif 398 393 399 # --- Storage bits. --- 394 400 -
trunk/src/VBox/Devices/Network/DevE1000.cpp
r40282 r40652 184 184 185 185 #define STATUS_LU 0x00000002 186 #define STATUS_TXOFF 0x00000010 186 187 187 188 #define EECD_EE_WIRES 0x0F … … 3113 3114 int rc = pDrv->pfnAllocBuf(pDrv, cbMin, fGso ? &pState->GsoCtx : NULL, &pSg); 3114 3115 if (RT_FAILURE(rc)) 3116 { 3117 /* Suspend TX as we are out of buffers atm */ 3118 STATUS |= STATUS_TXOFF; 3115 3119 return rc; 3120 } 3116 3121 } 3117 3122 else … … 3642 3647 * @thread E1000_TX 3643 3648 */ 3644 static void e1kXmitDesc(E1KSTATE* pState, E1KTXDESC* pDesc, RTGCPHYS addr, bool fOnWorkerThread) 3645 { 3649 static int e1kXmitDesc(E1KSTATE* pState, E1KTXDESC* pDesc, RTGCPHYS addr, bool fOnWorkerThread) 3650 { 3651 int rc = VINF_SUCCESS; 3646 3652 uint32_t cbVTag = 0; 3647 3653 … … 3731 3737 E1kLog3(("%s About to allocate TX buffer: cbVTag=%u\n", INSTANCE(pState), cbVTag)); 3732 3738 if (e1kCanDoGso(&pState->GsoCtx, &pDesc->data, &pState->contextTSE)) 3733 e1kXmitAllocBuf(pState, pState->contextTSE.dw2.u20PAYLEN + pState->contextTSE.dw3.u8HDRLEN + cbVTag,3739 rc = e1kXmitAllocBuf(pState, pState->contextTSE.dw2.u20PAYLEN + pState->contextTSE.dw3.u8HDRLEN + cbVTag, 3734 3740 true /*fExactSize*/, true /*fGso*/); 3741 else if (pDesc->data.cmd.fTSE) 3742 rc = e1kXmitAllocBuf(pState, pState->contextTSE.dw3.u16MSS + pState->contextTSE.dw3.u8HDRLEN + cbVTag, 3743 pDesc->data.cmd.fTSE /*fExactSize*/, false /*fGso*/); 3735 3744 else 3736 e1kXmitAllocBuf(pState, pState->contextTSE.dw3.u16MSS + pState->contextTSE.dw3.u8HDRLEN + cbVTag, 3737 pDesc->data.cmd.fTSE /*fExactSize*/, false /*fGso*/); 3745 rc = e1kXmitAllocBuf(pState, pDesc->data.cmd.u20DTALEN + cbVTag, 3746 pDesc->data.cmd.fEOP /*fExactSize*/, false /*fGso*/); 3747 3748 /** 3749 * @todo: Perhaps it is not that simple for GSO packets! We may 3750 * need to unwind some changes. 3751 */ 3752 if (RT_FAILURE(rc)) 3753 { 3754 STAM_PROFILE_ADV_STOP(&pState->CTX_SUFF_Z(StatTransmit), a); 3755 break; 3756 } 3738 3757 /** @todo Is there any way to indicating errors other than collisions? Like 3739 3758 * VERR_NET_DOWN. */ … … 3825 3844 E1kLog3(("%s About to allocate TX buffer: cbVTag=%u\n", INSTANCE(pState), cbVTag)); 3826 3845 /** @todo reset status bits? */ 3827 e1kXmitAllocBuf(pState, pDesc->legacy.cmd.u16Length + cbVTag, pDesc->legacy.cmd.fEOP, false /*fGso*/); 3846 rc = e1kXmitAllocBuf(pState, pDesc->legacy.cmd.u16Length + cbVTag, pDesc->legacy.cmd.fEOP, false /*fGso*/); 3847 if (RT_FAILURE(rc)) 3848 { 3849 STAM_PROFILE_ADV_STOP(&pState->CTX_SUFF_Z(StatTransmit), a); 3850 break; 3851 } 3852 3828 3853 /** @todo Is there any way to indicating errors other than collisions? Like 3829 3854 * VERR_NET_DOWN. */ … … 3861 3886 break; 3862 3887 } 3888 3889 return rc; 3863 3890 } 3864 3891 … … 3900 3927 3901 3928 e1kLoadDesc(pState, &desc, ((uint64_t)TDBAH << 32) + TDBAL + TDH * sizeof(desc)); 3902 e1kXmitDesc(pState, &desc, ((uint64_t)TDBAH << 32) + TDBAL + TDH * sizeof(desc), fOnWorkerThread); 3929 rc = e1kXmitDesc(pState, &desc, ((uint64_t)TDBAH << 32) + TDBAL + TDH * sizeof(desc), fOnWorkerThread); 3930 /* If we failed to transmit descriptor we will try it again later */ 3931 if (RT_FAILURE(rc)) 3932 break; 3903 3933 if (++TDH * sizeof(desc) >= TDLEN) 3904 3934 TDH = 0; … … 3935 3965 { 3936 3966 E1KSTATE *pState = RT_FROM_MEMBER(pInterface, E1KSTATE, INetworkDown); 3967 /* Resume suspended transmission */ 3968 STATUS &= ~STATUS_TXOFF; 3937 3969 e1kXmitPending(pState, true /*fOnWorkerThread*/); 3938 3970 } -
trunk/src/VBox/Devices/build/VBoxDD.cpp
r40591 r40652 257 257 if (RT_FAILURE(rc)) 258 258 return rc; 259 #ifdef VBOX_WITH_NETSHAPER 260 rc = pCallbacks->pfnRegister(pCallbacks, &g_DrvNetShaper); 261 if (RT_FAILURE(rc)) 262 return rc; 263 #endif /* VBOX_WITH_NETSHAPER */ 259 264 rc = pCallbacks->pfnRegister(pCallbacks, &g_DrvAUDIO); 260 265 if (RT_FAILURE(rc)) -
trunk/src/VBox/Devices/build/VBoxDD.h
r38913 r40652 111 111 extern const PDMDRVREG g_DrvDedicatedNic; 112 112 extern const PDMDRVREG g_DrvNAT; 113 #ifdef VBOX_WITH_NETSHAPER 114 extern const PDMDRVREG g_DrvNetShaper; 115 #endif /* VBOX_WITH_NETSHAPER */ 113 116 extern const PDMDRVREG g_DrvNetSniffer; 114 117 extern const PDMDRVREG g_DrvAUDIO; -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r40633 r40652 1020 1020 InsertConfigNode(pAc, "File", &pAcFile); 1021 1021 InsertConfigNode(pAcFile, "BwGroups", &pAcFileBwGroups); 1022 #ifdef VBOX_WITH_NETSHAPER 1023 PCFGMNODE pNetworkShaper; 1024 PCFGMNODE pNetworkBwGroups; 1025 1026 InsertConfigNode(pPDM, "NetworkShaper", &pNetworkShaper); 1027 InsertConfigNode(pNetworkShaper, "BwGroups", &pNetworkBwGroups); 1028 #endif /* VBOX_WITH_NETSHAPER */ 1022 1029 1023 1030 for (size_t i = 0; i < bwGroups.size(); i++) … … 1039 1046 InsertConfigInteger(pBwGroup, "Step", 0); 1040 1047 } 1048 #ifdef VBOX_WITH_NETSHAPER 1049 else if (enmType == BandwidthGroupType_Network) 1050 { 1051 /* Network bandwidth groups. */ 1052 PCFGMNODE pBwGroup; 1053 InsertConfigNode(pNetworkBwGroups, Utf8Str(strName).c_str(), &pBwGroup); 1054 InsertConfigInteger(pBwGroup, "Max", cMaxMbPerSec * 1000); // @todo: _1M); 1055 } 1056 #endif /* VBOX_WITH_NETSHAPER */ 1041 1057 } 1042 1058 … … 3678 3694 } 3679 3695 3680 Utf8Str strNetDriver; 3681 if (fAttachDetach && fSniffer) 3682 { 3683 const char *pszNetDriver = "IntNet"; 3684 if (meAttachmentType[uInstance] == NetworkAttachmentType_NAT) 3685 pszNetDriver = "NAT"; 3686 #if !defined(VBOX_WITH_NETFLT) && defined(RT_OS_LINUX) 3687 if (meAttachmentType[uInstance] == NetworkAttachmentType_Bridged) 3688 pszNetDriver = "HostInterface"; 3689 #endif 3690 if (meAttachmentType[uInstance] == NetworkAttachmentType_Generic) 3691 { 3692 hrc = aNetworkAdapter->COMGETTER(GenericDriver)(bstr.asOutParam()); H(); 3693 strNetDriver = bstr; 3694 pszNetDriver = strNetDriver.c_str(); 3695 } 3696 3697 rc = PDMR3DriverDetach(pVM, pszDevice, uInstance, uLun, pszNetDriver, 0, 0 /*fFlags*/); 3698 if (rc == VINF_PDM_NO_DRIVER_ATTACHED_TO_LUN) 3699 rc = VINF_SUCCESS; 3700 AssertLogRelRCReturn(rc, rc); 3701 3702 pLunL0 = CFGMR3GetChildF(pInst, "LUN#%u", uLun); 3703 PCFGMNODE pLunAD = CFGMR3GetChildF(pLunL0, "AttachedDriver"); 3704 if (pLunAD) 3705 { 3706 CFGMR3RemoveNode(pLunAD); 3707 } 3708 else 3709 { 3710 CFGMR3RemoveNode(pLunL0); 3711 InsertConfigNode(pInst, "LUN#0", &pLunL0); 3712 InsertConfigString(pLunL0, "Driver", "NetSniffer"); 3713 InsertConfigNode(pLunL0, "Config", &pCfg); 3714 hrc = aNetworkAdapter->COMGETTER(TraceFile)(bstr.asOutParam()); H(); 3715 if (!bstr.isEmpty()) /* check convention for indicating default file. */ 3716 InsertConfigString(pCfg, "File", bstr); 3717 } 3718 } 3719 else if (fAttachDetach && !fSniffer) 3696 if (fAttachDetach) 3720 3697 { 3721 3698 rc = PDMR3DeviceDetach(pVM, pszDevice, uInstance, uLun, 0 /*fFlags*/); … … 3727 3704 CFGMR3RemoveNode(CFGMR3GetChildF(pInst, "LUN#%u", uLun)); 3728 3705 } 3729 else if (!fAttachDetach && fSniffer) 3706 3707 #ifdef VBOX_WITH_NETSHAPER 3708 ComObjPtr<IBandwidthGroup> pBwGroup; 3709 Bstr strBwGroup; 3710 PNETSHAPER pShaper = NULL; 3711 PNETSHAPERFILTER pFilter = NULL; 3712 hrc = aNetworkAdapter->COMGETTER(BandwidthGroup)(pBwGroup.asOutParam()); H(); 3713 3714 if (!pBwGroup.isNull()) 3730 3715 { 3731 /* insert the sniffer filter driver. */ 3732 InsertConfigNode(pInst, "LUN#0", &pLunL0); 3716 hrc = pBwGroup->COMGETTER(Name)(strBwGroup.asOutParam()); H(); 3717 } 3718 #endif /* VBOX_WITH_NETSHAPER */ 3719 3720 Utf8Str strNetDriver; 3721 3722 3723 InsertConfigNode(pInst, "LUN#0", &pLunL0); 3724 3725 #ifdef VBOX_WITH_NETSHAPER 3726 if (!strBwGroup.isEmpty()) 3727 { 3728 InsertConfigString(pLunL0, "Driver", "NetShaper"); 3729 InsertConfigNode(pLunL0, "Config", &pCfg); 3730 InsertConfigString(pCfg, "BwGroup", strBwGroup); 3731 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0); 3732 } 3733 #endif /* VBOX_WITH_NETSHAPER */ 3734 3735 if (fSniffer) 3736 { 3733 3737 InsertConfigString(pLunL0, "Driver", "NetSniffer"); 3734 3738 InsertConfigNode(pLunL0, "Config", &pCfg); 3735 hrc = aNetworkAdapter->COMGETTER(TraceFile)(bstr.asOutParam()); 3739 hrc = aNetworkAdapter->COMGETTER(TraceFile)(bstr.asOutParam()); H(); 3736 3740 if (!bstr.isEmpty()) /* check convention for indicating default file. */ 3737 3741 InsertConfigString(pCfg, "File", bstr); 3742 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0); 3738 3743 } 3744 3739 3745 3740 3746 Bstr networkName, trunkName, trunkType; … … 3750 3756 ComPtr<INATEngine> natDriver; 3751 3757 hrc = aNetworkAdapter->COMGETTER(NatDriver)(natDriver.asOutParam()); H(); 3752 if (fSniffer)3753 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);3754 else3755 InsertConfigNode(pInst, "LUN#0", &pLunL0);3756 3758 InsertConfigString(pLunL0, "Driver", "NAT"); 3757 3759 InsertConfigNode(pLunL0, "Config", &pCfg); … … 3918 3920 if ((int)maTapFD[uInstance] >= 0) 3919 3921 { 3920 if (fSniffer)3921 {3922 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);3923 }3924 else3925 {3926 InsertConfigNode(pInst, "LUN#0", &pLunL0);3927 }3928 3922 InsertConfigString(pLunL0, "Driver", "HostInterface"); 3929 3923 InsertConfigNode(pLunL0, "Config", &pCfg); … … 3935 3929 * This is the new VBoxNetFlt+IntNet stuff. 3936 3930 */ 3937 if (fSniffer)3938 {3939 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);3940 }3941 else3942 {3943 InsertConfigNode(pInst, "LUN#0", &pLunL0);3944 }3945 3946 3931 Bstr BridgedIfName; 3947 3932 hrc = aNetworkAdapter->COMGETTER(BridgedInterface)(BridgedIfName.asOutParam()); … … 4345 4330 if (!bstr.isEmpty()) 4346 4331 { 4347 if (fSniffer)4348 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);4349 else4350 InsertConfigNode(pInst, "LUN#0", &pLunL0);4351 4332 InsertConfigString(pLunL0, "Driver", "IntNet"); 4352 4333 InsertConfigNode(pLunL0, "Config", &pCfg); … … 4362 4343 case NetworkAttachmentType_HostOnly: 4363 4344 { 4364 if (fSniffer)4365 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);4366 else4367 InsertConfigNode(pInst, "LUN#0", &pLunL0);4368 4369 4345 InsertConfigString(pLunL0, "Driver", "IntNet"); 4370 4346 InsertConfigNode(pLunL0, "Config", &pCfg); … … 4573 4549 ComSafeArrayAsOutParam(values)); H(); 4574 4550 4575 if (fSniffer)4576 InsertConfigNode(pLunL0, "AttachedDriver", &pLunL0);4577 else4578 InsertConfigNode(pInst, "LUN#0", &pLunL0);4579 4551 InsertConfigString(pLunL0, "Driver", bstr); 4580 4552 InsertConfigNode(pLunL0, "Config", &pCfg); -
trunk/src/VBox/Main/xml/Settings.cpp
r40418 r40652 1499 1499 && (genericProperties == n.genericProperties) 1500 1500 && (ulBootPriority == n.ulBootPriority) 1501 && (strBandwidthGroup == n.strBandwidthGroup) 1501 1502 ) 1502 1503 ); -
trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd
r39248 r40652 721 721 <xsd:attribute name="trace" type="xsd:boolean" default="false"/> 722 722 <xsd:attribute name="tracefile" type="xsd:string"/> 723 <xsd:attribute name="bandwidthGroup" type="xsd:string"/> 723 724 </xsd:complexType> 724 725 -
trunk/src/VBox/VMM/Makefile.kmk
r40636 r40652 78 78 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION 79 79 VBoxVMM_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION 80 endif 81 ifdef VBOX_WITH_NETSHAPER 82 VBoxVMM_DEFS += VBOX_WITH_NETSHAPER 80 83 endif 81 84 VBoxVMM_DEFS.darwin = VMM_R0_SWITCH_STACK … … 202 205 VMMR3/PDMAsyncCompletionFileNormal.cpp 203 206 endif 207 ifdef VBOX_WITH_NETSHAPER 208 VBoxVMM_SOURCES += \ 209 VMMR3/PDMNetShaper.cpp 210 endif 204 211 205 212 ifdef VBOX_WITH_RAW_MODE -
trunk/src/VBox/VMM/VMMAll/MMAll.cpp
r39078 r40652 612 612 TAG2STR(PDM_THREAD); 613 613 TAG2STR(PDM_ASYNC_COMPLETION); 614 #ifdef VBOX_WITH_NETSHAPER 615 TAG2STR(PDM_NET_SHAPER); 616 #endif /* VBOX_WITH_NETSHAPER */ 614 617 615 618 TAG2STR(PGM); -
trunk/src/VBox/VMM/VMMR3/PDM.cpp
r40416 r40652 390 390 rc = pdmR3AsyncCompletionInit(pVM); 391 391 #endif 392 #ifdef VBOX_WITH_NETSHAPER 393 if (RT_SUCCESS(rc)) 394 rc = pdmR3NetShaperInit(pVM); 395 #endif 392 396 if (RT_SUCCESS(rc)) 393 397 rc = pdmR3BlkCacheInit(pVM); … … 662 666 pdmR3BlkCacheTerm(pVM); 663 667 668 #ifdef VBOX_WITH_NETSHAPER 669 /* 670 * Destroy network bandwidth groups. 671 */ 672 pdmR3NetShaperTerm(pVM); 673 #endif 664 674 #ifdef VBOX_WITH_PDM_ASYNC_COMPLETION 665 675 /* -
trunk/src/VBox/VMM/VMMR3/PDMDriver.cpp
r40274 r40652 1530 1530 1531 1531 1532 #ifdef VBOX_WITH_NETSHAPER 1533 /** @interface_method_impl{PDMDRVHLP,pfnNetShaperAttach} */ 1534 static DECLCALLBACK(int) pdmR3DrvHlp_NetShaperAttach(PPDMDRVINS pDrvIns, const char *pszBwGroup, PPDMNSFILTER pFilter) 1535 { 1536 PDMDRV_ASSERT_DRVINS(pDrvIns); 1537 LogFlow(("pdmR3DrvHlp_NetShaperAttach: caller='%s'/%d: pFilter=%p pszBwGroup=%p:{%s}\n", 1538 pDrvIns->pReg->szName, pDrvIns->iInstance, pFilter, pszBwGroup, pszBwGroup)); 1539 1540 int rc = PDMR3NsAttach(pDrvIns->Internal.s.pVMR3, pDrvIns, pszBwGroup, pFilter); 1541 1542 LogFlow(("pdmR3DrvHlp_NetShaperAttach: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, 1543 pDrvIns->iInstance, rc)); 1544 return rc; 1545 } 1546 1547 1548 /** @interface_method_impl{PDMDRVHLP,pfnNetShaperDetach} */ 1549 static DECLCALLBACK(int) pdmR3DrvHlp_NetShaperDetach(PPDMDRVINS pDrvIns, PPDMNSFILTER pFilter) 1550 { 1551 PDMDRV_ASSERT_DRVINS(pDrvIns); 1552 LogFlow(("pdmR3DrvHlp_NetShaperDetach: caller='%s'/%d: pFilter=%p\n", 1553 pDrvIns->pReg->szName, pDrvIns->iInstance, pFilter)); 1554 1555 int rc = PDMR3NsDetach(pDrvIns->Internal.s.pVMR3, pDrvIns, pFilter); 1556 1557 LogFlow(("pdmR3DrvHlp_NetShaperDetach: caller='%s'/%d: returns %Rrc\n", pDrvIns->pReg->szName, 1558 pDrvIns->iInstance, rc)); 1559 return rc; 1560 } 1561 #endif /* VBOX_WITH_NETSHAPER */ 1562 1563 1532 1564 /** @interface_method_impl{PDMDRVHLP,pfnLdrGetRCInterfaceSymbols} */ 1533 1565 static DECLCALLBACK(int) pdmR3DrvHlp_LdrGetRCInterfaceSymbols(PPDMDRVINS pDrvIns, void *pvInterface, size_t cbInterface, … … 1734 1766 pdmR3DrvHlp_ThreadCreate, 1735 1767 pdmR3DrvHlp_AsyncCompletionTemplateCreate, 1768 #ifdef VBOX_WITH_NETSHAPER 1769 pdmR3DrvHlp_NetShaperAttach, 1770 pdmR3DrvHlp_NetShaperDetach, 1771 #endif /* VBOX_WITH_NETSHAPER */ 1736 1772 pdmR3DrvHlp_LdrGetRCInterfaceSymbols, 1737 1773 pdmR3DrvHlp_LdrGetR0InterfaceSymbols, -
trunk/src/VBox/VMM/include/PDMInternal.h
r39839 r40652 25 25 #include <VBox/vusb.h> 26 26 #include <VBox/vmm/pdmasynccompletion.h> 27 #ifdef VBOX_WITH_NETSHAPER 28 #include <VBox/vmm/pdmnetshaper.h> 29 #endif /* VBOX_WITH_NETSHAPER */ 27 30 #include <VBox/vmm/pdmblkcache.h> 28 31 #include <VBox/vmm/pdmcommon.h> … … 1061 1064 R3PTRTYPE(PPDMASYNCCOMPLETIONTEMPLATE) pAsyncCompletionTemplates; 1062 1065 /** @} */ 1066 #ifdef VBOX_WITH_NETSHAPER 1067 /** Pointer to network shaper instance. */ 1068 R3PTRTYPE(PPDMNETSHAPER) pNetShaper; 1069 #endif /* VBOX_WITH_NETSHAPER */ 1063 1070 1064 1071 R3PTRTYPE(PPDMBLKCACHEGLOBAL) pBlkCacheGlobal; … … 1180 1187 #endif 1181 1188 1189 #ifdef VBOX_WITH_NETSHAPER 1190 int pdmR3NetShaperInit(PVM pVM); 1191 int pdmR3NetShaperTerm(PVM pVM); 1192 #endif 1193 1182 1194 int pdmR3BlkCacheInit(PVM pVM); 1183 1195 void pdmR3BlkCacheTerm(PVM pVM);
Note:
See TracChangeset
for help on using the changeset viewer.