Changeset 22252 in vbox
- Timestamp:
- Aug 14, 2009 8:31:12 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 51066
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNAT.cpp
r22251 r22252 172 172 RTSEMEVENT semNATRx; 173 173 bool fCanOutput; 174 STAMCOUNTER StatNATRxWakeups; 174 175 #endif 175 176 } DRVNAT; … … 185 186 while (pThread->enmState == PDMTHREADSTATE_RUNNING) 186 187 { 187 int rc = pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0); 188 bool fHaveRxBuffers = RT_SUCCESS(rc); 188 int rc; 189 bool fHaveRxBuffers; 190 do { 191 rc = pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0); 192 fHaveRxBuffers = RT_SUCCESS(rc); 193 if (!fHaveRxBuffers) RTThreadSleep(2); 194 } while (!fHaveRxBuffers && pThread->enmState == PDMTHREADSTATE_RUNNING); 189 195 190 196 if (!pThis->fCanOutput && fHaveRxBuffers) … … 214 220 PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT); 215 221 int rc = RTSemEventSignal(pThis->semNATRx); 222 STAM_COUNTER_INC(&pThis->StatNATRxWakeups); 216 223 AssertReleaseRC(rc); 217 224 return VINF_SUCCESS; … … 532 539 #endif /* RT_OS_WINDOWS */ 533 540 #ifdef SLIRP_SPLIT_CAN_OUTPUT 534 drvNATRxWakeup(pThis->pDrvIns, pThis->thrNATRx); 541 if (!pThis->fCanOutput) 542 drvNATRxWakeup(pThis->pDrvIns, pThis->thrNATRx); 535 543 #endif 536 544 } … … 596 604 { 597 605 #ifdef SLIRP_SPLIT_CAN_OUTPUT 606 PDRVNAT pThis = (PDRVNAT)pvUser; 598 607 return pThis->fCanOutput; 599 608 #else … … 662 671 if (RT_FAILURE(pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0))) 663 672 { 673 STAM_COUNTER_INC(&pThis->StatConsumerFalse); 674 return false; 675 } 676 #else 677 if (RT_FAILURE(pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0))) 678 { 679 drvNATRxWakeup(pThis->pDrvIns, pThis->thrNATRx); 664 680 STAM_COUNTER_INC(&pThis->StatConsumerFalse); 665 681 return false; … … 971 987 STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting PDM consumer false" 972 988 " queue", "/Drivers/NAT%u/PDMConsumerFalse", pDrvIns->iInstance); 989 # ifdef SLIRP_SPLIT_CAN_OUTPUT 990 PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatNATRxWakeups, STAMTYPE_COUNTER, 991 STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "counting wakeups of NATRX" 992 " thread", "/Drivers/NAT%u/NATRxWakeups", pDrvIns->iInstance); 993 # endif 973 994 #endif 974 995
Note:
See TracChangeset
for help on using the changeset viewer.