Changeset 25125 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Dec 1, 2009 12:28:55 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 55503
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNAT.cpp
r25111 r25125 170 170 /** event to wakeup the guest receive thread */ 171 171 RTSEMEVENT EventRecv; 172 RTCRITSECT csEventRecv;173 172 /** event to wakeup the guest urgent receive thread */ 174 173 RTSEMEVENT EventUrgRecv; 175 RTCRITSECT csEventUrgRecv;176 174 /** Receive Req queue (deliver packets to the guest) */ 177 175 PRTREQQUEUE pRecvReqQueue; … … 233 231 { 234 232 PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT); 235 int rc;236 233 237 234 if (pThread->enmState == PDMTHREADSTATE_INITIALIZING) … … 240 237 while (pThread->enmState == PDMTHREADSTATE_RUNNING) 241 238 { 242 rc = RTCritSectEnter(&pThis->csEventRecv);243 AssertRC(rc);244 239 RTReqProcess(pThis->pRecvReqQueue, 0); 245 rc = RTCritSectLeave(&pThis->csEventRecv);246 AssertRC(rc);247 240 if (ASMAtomicReadU32(&pThis->cPkt) == 0) 248 {249 241 RTSemEventWait(pThis->EventRecv, RT_INDEFINITE_WAIT); 250 }251 242 } 252 243 return VINF_SUCCESS; … … 260 251 if (ASMAtomicReadU32(&pThis->cPkt) > 0) 261 252 { 262 rc = RTCritSectEnter(&pThis->csEventRecv);263 AssertRC(rc);264 253 rc = RTSemEventSignal(pThis->EventRecv); 265 AssertRC(rc);266 rc = RTCritSectLeave(&pThis->csEventRecv);267 254 } 268 255 … … 280 267 while (pThread->enmState == PDMTHREADSTATE_RUNNING) 281 268 { 282 int rc;283 rc = RTCritSectEnter(&pThis->csEventUrgRecv);284 AssertRC(rc);285 269 RTReqProcess(pThis->pUrgRecvReqQueue, 0); 286 rc = RTCritSectLeave(&pThis->csEventUrgRecv);287 AssertRC(rc);288 270 if (ASMAtomicReadU32(&pThis->cUrgPkt) == 0) 289 271 { 290 rc = RTSemEventWait(pThis->EventUrgRecv, RT_INDEFINITE_WAIT);272 int rc = RTSemEventWait(pThis->EventUrgRecv, RT_INDEFINITE_WAIT); 291 273 AssertRC(rc); 292 274 } … … 299 281 if (ASMAtomicReadU32(&pThis->cUrgPkt) > 0) 300 282 { 301 int rc; 302 rc = RTCritSectEnter(&pThis->csEventUrgRecv); 303 AssertRC(rc); 304 rc = RTSemEventSignal(pThis->EventUrgRecv); 305 AssertRC(rc); 306 rc = RTCritSectLeave(&pThis->csEventUrgRecv); 283 int rc = RTSemEventSignal(pThis->EventUrgRecv); 307 284 AssertRC(rc); 308 285 } … … 349 326 while(ASMAtomicReadU32(&pThis->cUrgPkt) != 0) 350 327 { 351 rc = RTCritSectLeave(&pThis->csEventRecv);352 AssertRC(rc);353 328 rc = RTSemEventWait(pThis->EventRecv, RT_INDEFINITE_WAIT); 354 329 if ( RT_FAILURE(rc) … … 356 331 || rc == VERR_INTERRUPTED)) 357 332 goto done_unlocked; 358 rc = RTCritSectEnter(&pThis->csEventRecv);359 AssertRC(rc);360 333 } 361 334 … … 1171 1144 rc = RTSemEventCreate(&pThis->EventRecv); 1172 1145 rc = RTSemEventCreate(&pThis->EventUrgRecv); 1173 rc = RTCritSectInit(&pThis->csEventRecv);1174 rc = RTCritSectInit(&pThis->csEventUrgRecv);1175 1146 rc = RTCritSectInit(&pThis->csDevAccess); 1176 1147 rc = PDMDrvHlpTMTimerCreate(pThis->pDrvIns, TMCLOCK_REAL/*enmClock*/, drvNATSlowTimer,
Note:
See TracChangeset
for help on using the changeset viewer.