Changeset 4624 in vbox
- Timestamp:
- Sep 8, 2007 6:32:00 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 24270
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DevPCNet.cpp
r4623 r4624 46 46 */ 47 47 48 /** To enable the PDMThread based send thread code.49 * This is just a emergency switch in case changes doesn't quite work and50 * we want to get 1.5 out.51 * @todo cleanup after 1.5. */52 #define USE_PDMTHREAD 153 54 48 /******************************************************************************* 55 49 * Header Files * … … 223 217 /** Async send thread */ 224 218 RTSEMEVENT hSendEventSem; 225 #ifdef USE_PDMTHREAD226 219 /** The Async send thread. */ 227 220 PPDMTHREAD pSendThread; 228 #else229 RTTHREAD hSendThread;230 #endif231 221 232 222 /** Access critical section. */ … … 2057 2047 { 2058 2048 int rc = pcnetXmitCompleteFrame(pData); 2059 #ifdef USE_PDMTHREAD2060 2049 AssertRCReturn(rc, rc); 2061 #else2062 if (VBOX_FAILURE(rc))2063 return rc; /* can happen during termination */2064 #endif2065 2050 } 2066 2051 } … … 2168 2153 { 2169 2154 int rc = pcnetXmitCompleteFrame(pData); 2170 #ifdef USE_PDMTHREAD2171 2155 AssertRCReturn(rc, rc); 2172 #else2173 if (VBOX_FAILURE(rc))2174 return rc; /* can happen during termination */2175 #endif2176 2156 } 2177 2157 else if (CSR_LOOP(pData) && !fDropFrame) … … 2236 2216 2237 2217 2238 #ifdef USE_PDMTHREAD2239 2218 /** 2240 2219 * Async I/O thread for delayed sending of packets. … … 2309 2288 return RTSemEventSignal(pThis->hSendEventSem); 2310 2289 } 2311 2312 2313 #else /* USE_PDMTHREAD */2314 /**2315 * Async I/O thread for delayed sending of packets.2316 */2317 static DECLCALLBACK(int) pcnetAsyncSend(RTTHREAD ThreadSelf, void *pvUser)2318 {2319 PCNetState *pData = (PCNetState *)pvUser;2320 RTSEMEVENT hEvent = pData->hSendEventSem;2321 int rc = VINF_SUCCESS;2322 2323 while(rc == VINF_SUCCESS)2324 {2325 rc = RTSemEventWait(hEvent, RT_INDEFINITE_WAIT);2326 if (VBOX_FAILURE(rc))2327 break;2328 2329 rc = PDMCritSectEnter(&pData->CritSect, VERR_PERMISSION_DENIED);2330 AssertReleaseRC(rc);2331 2332 if (!pData->fSaving)2333 rc = pcnetAsyncTransmit(pData);2334 2335 PDMCritSectLeave(&pData->CritSect);2336 }2337 return VINF_SUCCESS;2338 }2339 #endif /* USE_PDMTHREAD */2340 2290 2341 2291 #endif /* IN_RING3 */ … … 4166 4116 if (PDMCritSectIsInitialized(&pData->CritSect)) 4167 4117 { 4168 #ifdef USE_PDMTHREAD4169 4118 /* 4170 4119 * At this point the send thread is suspended and will not enter … … 4175 4124 pData->hSendEventSem = NIL_RTSEMEVENT; 4176 4125 PDMR3CritSectDelete(&pData->CritSect); 4177 #else4178 PDMCritSectEnter(&pData->CritSect, VERR_ACCESS_DENIED);4179 4180 RTSemEventDestroy(pData->hSendEventSem);4181 pData->hSendEventSem = 0;4182 4183 PDMCritSectLeave(&pData->CritSect);4184 PDMR3CritSectDelete(&pData->CritSect);4185 #endif4186 4126 } 4187 4127 return VINF_SUCCESS; … … 4454 4394 4455 4395 /* Create asynchronous thread */ 4456 #ifdef USE_PDMTHREAD4457 4396 rc = PDMDevHlpPDMThreadCreate(pDevIns, &pData->pSendThread, pData, pcnetAsyncSendThread, pcnetAsyncSendThreadWakeUp, 0, RTTHREADTYPE_IO, "PCNET_SEND"); 4458 4397 AssertRCReturn(rc, rc); 4459 #else4460 rc = RTThreadCreate(&pData->hSendThread, pcnetAsyncSend, (void *)pData, 128*1024, RTTHREADTYPE_IO, 0, "PCNET_SEND");4461 AssertRC(rc);4462 #endif4463 4398 4464 4399 #ifdef VBOX_WITH_STATISTICS
Note:
See TracChangeset
for help on using the changeset viewer.