/* Return 1 on timeout */ int rtp_sig_semaphore_wait_timed (RTP_SEMAPHORE semHandle, long msecs) { unsigned long ticks; RTP_BOOL poll_test; if (msecs == RTP_TIMEOUT_INFINITE) { poll_test = pollos_test((P_POLLOS_SIGNAL)semHandle, RTIP_INF); } else { /* convert msec to ticks */ ticks = (rtp_get_ticks_p_sec() * msecs)/1000; if (ticks < 1) { ticks = 1; } poll_test = pollos_test((P_POLLOS_SIGNAL)semHandle, ticks); } if (poll_test == RTP_FALSE) { return(1); /* timed out */ } else { return(0); } }
BOOL RTIP_SOCKETS_Driver::Uninitialize() { NATIVE_PROFILE_PAL_NETWORK(); const int c_exitTimeout = 1; // secs int exitRetries = 3; bool fEnabled = INTERRUPTS_ENABLED_STATE(); if(!fEnabled) ENABLE_INTERRUPTS(); while(exitRetries--) { if(!xn_wait_pkts_output( RTP_TRUE, c_exitTimeout * rtp_get_ticks_p_sec() )) break; while(HAL_CONTINUATION::Dequeue_And_Execute()); } if(!fEnabled) DISABLE_INTERRUPTS(); #if defined(NETWORK_USE_LOOPBACK) // close the loopback driver g_LOOPBACK_Driver.Close(); #endif for(int i=0; i<g_NetworkConfig.NetworkInterfaceCount; i++) { UpdateAdapterConfiguration(i, SOCK_NETWORKCONFIGURATION_UPDATE_DHCP_RELEASE, &g_NetworkConfig.NetworkInterfaces[i]); Network_Interface_Close(i); } rtp_net_exit(); return TRUE; }