Changeset 28146 in vbox for trunk/src/VBox/Devices/Network
- Timestamp:
- Apr 9, 2010 2:20:16 PM (15 years ago)
- Location:
- trunk/src/VBox/Devices/Network
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/DrvNAT.cpp
r28143 r28146 675 675 int ms; 676 676 #ifdef RT_OS_WINDOWS 677 DWORD event; 678 HANDLE *phEvents; 677 HANDLE *phEvents = slirp_get_events(pThis->pNATState); 679 678 unsigned int cBreak = 0; 680 679 #else /* RT_OS_WINDOWS */ 681 struct pollfd *polls = NULL;682 680 unsigned int cPollNegRet = 0; 683 681 #endif /* !RT_OS_WINDOWS */ … … 687 685 if (pThread->enmState == PDMTHREADSTATE_INITIALIZING) 688 686 return VINF_SUCCESS; 689 690 #ifdef RT_OS_WINDOWS691 phEvents = slirp_get_events(pThis->pNATState);692 #endif /* RT_OS_WINDOWS */693 687 694 688 /* … … 697 691 while (pThread->enmState == PDMTHREADSTATE_RUNNING) 698 692 { 699 nFDs = -1;700 693 /* 701 694 * To prevent concurent execution of sending/receving threads … … 703 696 #ifndef RT_OS_WINDOWS 704 697 nFDs = slirp_get_nsock(pThis->pNATState); 705 polls = NULL;706 698 /* allocation for all sockets + Management pipe */ 707 polls = (struct pollfd *)RTMemAlloc((1 + nFDs) * sizeof(struct pollfd) + sizeof(uint32_t));699 struct pollfd *polls = (struct pollfd *)RTMemAlloc((1 + nFDs) * sizeof(struct pollfd) + sizeof(uint32_t)); 708 700 if (polls == NULL) 709 701 return VERR_NO_MEMORY; … … 711 703 /* don't pass the managemant pipe */ 712 704 slirp_select_fill(pThis->pNATState, &nFDs, &polls[1]); 713 #if 0714 ms = slirp_get_timeout_ms(pThis->pNATState);715 #else716 ms = 0;717 #endif718 705 719 706 polls[0].fd = pThis->PipeRead; … … 722 709 polls[0].revents = 0; 723 710 724 int cChangedFDs = poll(polls, nFDs + 1, ms ? ms : -1);711 int cChangedFDs = poll(polls, nFDs + 1, slirp_get_timeout_ms(pThis->pNATState)); 725 712 if (cChangedFDs < 0) 726 713 { … … 765 752 RTReqProcess(pThis->pSlirpReqQueue, 0); 766 753 RTMemFree(polls); 754 767 755 #else /* RT_OS_WINDOWS */ 756 nFDs = -1; 768 757 slirp_select_fill(pThis->pNATState, &nFDs); 769 #if 0 770 ms = slirp_get_timeout_ms(pThis->pNATState); 771 #else 772 ms = 0; 773 #endif 774 struct timeval tv = { 0, ms*1000 }; 775 event = WSAWaitForMultipleEvents(nFDs, phEvents, FALSE, ms ? ms : WSA_INFINITE, FALSE); 776 if ( (event < WSA_WAIT_EVENT_0 || event > WSA_WAIT_EVENT_0 + nFDs - 1) 777 && event != WSA_WAIT_TIMEOUT) 758 DWORD dwEvent = WSAWaitForMultipleEvents(nFDs, phEvents, FALSE, 759 slirp_get_timeout_ms(pThis->pNATState), 760 FALSE); 761 if ( (dwEvent < WSA_WAIT_EVENT_0 || dwEvent > WSA_WAIT_EVENT_0 + nFDs - 1) 762 && dwEvent != WSA_WAIT_TIMEOUT) 778 763 { 779 764 int error = WSAGetLastError(); 780 LogRel(("NAT: WSAWaitForMultipleEvents returned %d (error %d)\n", event, error));765 LogRel(("NAT: WSAWaitForMultipleEvents returned %d (error %d)\n", dwEvent, error)); 781 766 RTAssertPanic(); 782 767 } 783 768 784 if ( event == WSA_WAIT_TIMEOUT)769 if (dwEvent == WSA_WAIT_TIMEOUT) 785 770 { 786 771 /* only check for slow/fast timers */ … … 790 775 /* poll the sockets in any case */ 791 776 Log2(("%s: poll\n", __FUNCTION__)); 792 slirp_select_poll(pThis->pNATState, /* fTimeout=*/false, /* fIcmp=*/( event == WSA_WAIT_EVENT_0));777 slirp_select_poll(pThis->pNATState, /* fTimeout=*/false, /* fIcmp=*/(dwEvent == WSA_WAIT_EVENT_0)); 793 778 /* process _all_ outstanding requests but don't wait */ 794 779 RTReqProcess(pThis->pSlirpReqQueue, 0); … … 863 848 void slirp_arm_fast_timer(void *pvUser) 864 849 { 850 #if 0 865 851 PDRVNAT pThis = (PDRVNAT)pvUser; 866 852 AssertPtr(pThis); 867 853 TMTimerSetMillies(pThis->pTmrFast, 2); 854 #endif 868 855 } 869 856 … … 883 870 void slirp_arm_slow_timer(void *pvUser) 884 871 { 872 #if 0 885 873 PDRVNAT pThis = (PDRVNAT)pvUser; 886 874 AssertPtr(pThis); 875 887 876 TMTimerSetMillies(pThis->pTmrSlow, 500); 877 #endif 888 878 } 889 879 -
trunk/src/VBox/Devices/Network/slirp/slirp.c
r28141 r28146 1851 1851 return 500; /* see PR_SLOWHZ */ 1852 1852 } 1853 return 0;1853 return 3600*1000; /* one hour */ 1854 1854 } 1855 1855
Note:
See TracChangeset
for help on using the changeset viewer.