- Timestamp:
- Jun 22, 2012 10:58:47 AM (13 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageBandwidthControl.cpp
r41842 r41882 82 82 return "Invalid limit specifier\n"; 83 83 } 84 if (*pLimit < =0)85 return "Limit must be positive\n";84 if (*pLimit < 0) 85 return "Limit cannot be negative\n"; 86 86 if (*pLimit > INT64_MAX / iMultiplier) 87 87 return "Limit is too big\n"; -
trunk/src/VBox/Main/src-server/BandwidthControlImpl.cpp
r41849 r41882 412 412 STDMETHODIMP BandwidthControl::CreateBandwidthGroup(IN_BSTR aName, BandwidthGroupType_T aType, LONG64 aMaxBytesPerSec) 413 413 { 414 if (aMaxBytesPerSec < =0)414 if (aMaxBytesPerSec < 0) 415 415 return setError(E_INVALIDARG, 416 tr("Bandwidth group limit must be positive"));416 tr("Bandwidth group limit cannot be negative")); 417 417 418 418 AutoCaller autoCaller(this); -
trunk/src/VBox/Main/src-server/BandwidthGroupImpl.cpp
r41849 r41882 284 284 STDMETHODIMP BandwidthGroup::COMSETTER(MaxBytesPerSec)(LONG64 aMaxBytesPerSec) 285 285 { 286 if (aMaxBytesPerSec < =0)286 if (aMaxBytesPerSec < 0) 287 287 return setError(E_INVALIDARG, 288 tr("Bandwidth group limit must be positive"));288 tr("Bandwidth group limit cannot be negative")); 289 289 290 290 AutoCaller autoCaller(this); -
trunk/src/VBox/VMM/VMMR3/PDMNetShaper.cpp
r41870 r41882 243 243 //int rc = RTCritSectEnter(&pBwGroup->cs); AssertRC(rc); 244 244 245 /* Check if the group is disabled. */ 246 if (pBwGroup->cbTransferPerSecMax == 0) 247 return; 248 245 249 PPDMNSFILTER pFilter = pBwGroup->pFiltersHead; 246 250 while (pFilter) … … 370 374 int rc = RTCritSectEnter(&pBwGroup->cs); AssertRC(rc); 371 375 bool fAllowed = true; 372 /* Re-fill the bucket first */ 373 uint64_t tsNow = RTTimeSystemNanoTS(); 374 uint32_t uTokensAdded = (tsNow - pBwGroup->tsUpdatedLast)*pBwGroup->cbTransferPerSecMax/(1000*1000*1000); 375 uint32_t uTokens = RT_MIN(pBwGroup->cbBucketSize, uTokensAdded + pBwGroup->cbTokensLast); 376 377 if (cbTransfer > uTokens) 378 { 379 fAllowed = false; 380 ASMAtomicWriteBool(&pFilter->fChoked, true); 376 if (pBwGroup->cbTransferPerSecMax) 377 { 378 /* Re-fill the bucket first */ 379 uint64_t tsNow = RTTimeSystemNanoTS(); 380 uint32_t uTokensAdded = (tsNow - pBwGroup->tsUpdatedLast)*pBwGroup->cbTransferPerSecMax/(1000*1000*1000); 381 uint32_t uTokens = RT_MIN(pBwGroup->cbBucketSize, uTokensAdded + pBwGroup->cbTokensLast); 382 383 if (cbTransfer > uTokens) 384 { 385 fAllowed = false; 386 ASMAtomicWriteBool(&pFilter->fChoked, true); 387 } 388 else 389 { 390 pBwGroup->tsUpdatedLast = tsNow; 391 pBwGroup->cbTokensLast = uTokens - cbTransfer; 392 } 393 Log2((LOG_FN_FMT "BwGroup=%#p{%s} cbTransfer=%u uTokens=%u uTokensAdded=%u fAllowed=%RTbool\n", 394 __PRETTY_FUNCTION__, pBwGroup, pBwGroup->pszName, cbTransfer, uTokens, uTokensAdded, fAllowed)); 381 395 } 382 396 else 383 { 384 pBwGroup->tsUpdatedLast = tsNow; 385 pBwGroup->cbTokensLast = uTokens - cbTransfer; 386 } 397 Log2((LOG_FN_FMT "BwGroup=%#p{%s} disabled fAllowed=%RTbool\n", 398 __PRETTY_FUNCTION__, pBwGroup, pBwGroup->pszName, fAllowed)); 387 399 388 400 rc = RTCritSectLeave(&pBwGroup->cs); AssertRC(rc); 389 Log2((LOG_FN_FMT "BwGroup=%#p{%s} cbTransfer=%u uTokens=%u uTokensAdded=%u fAllowed=%RTbool\n",390 __PRETTY_FUNCTION__, pBwGroup, pBwGroup->pszName, cbTransfer, uTokens, uTokensAdded, fAllowed));391 401 return fAllowed; 392 402 }
Note:
See TracChangeset
for help on using the changeset viewer.