Some more network changes.
This commit is contained in:
@@ -183,8 +183,10 @@ poll_thread(void *arg)
|
||||
/* Wait for a poll request. */
|
||||
network_poll();
|
||||
|
||||
if (pcap == NULL)
|
||||
if (pcap == NULL) {
|
||||
network_wait(0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (network_get_wait() || (poll_card->set_link_state && poll_card->set_link_state(poll_card->priv)) || (poll_card->wait && poll_card->wait(poll_card->priv)))
|
||||
data = NULL;
|
||||
@@ -213,12 +215,12 @@ poll_thread(void *arg)
|
||||
if (tx)
|
||||
network_do_tx();
|
||||
|
||||
/* Release ownership of the device. */
|
||||
network_wait(0);
|
||||
|
||||
/* If we did not get anything, wait a while. */
|
||||
if (!tx)
|
||||
thread_wait_event(evt, 10);
|
||||
|
||||
/* Release ownership of the device. */
|
||||
network_wait(0);
|
||||
}
|
||||
|
||||
/* No longer needed. */
|
||||
|
||||
@@ -366,7 +366,10 @@ poll_thread(void *arg)
|
||||
network_poll();
|
||||
|
||||
/* Stop processing if asked to. */
|
||||
if (slirp->stop) break;
|
||||
if (slirp->stop) {
|
||||
network_wait(0);
|
||||
break;
|
||||
}
|
||||
|
||||
/* See if there is any work. */
|
||||
slirp_tic(slirp);
|
||||
@@ -377,12 +380,12 @@ poll_thread(void *arg)
|
||||
if (tx)
|
||||
network_do_tx();
|
||||
|
||||
/* Release ownership of the queue. */
|
||||
network_wait(0);
|
||||
|
||||
/* If we did not get anything, wait a while. */
|
||||
if (!tx)
|
||||
thread_wait_event(evt, 10);
|
||||
|
||||
/* Release ownership of the queue. */
|
||||
network_wait(0);
|
||||
}
|
||||
|
||||
/* No longer needed. */
|
||||
|
||||
@@ -204,9 +204,13 @@ network_wait(uint8_t wait)
|
||||
void
|
||||
network_poll(void)
|
||||
{
|
||||
network_wait(0);
|
||||
|
||||
while (poll_data.busy)
|
||||
thread_wait_event(poll_data.wake_poll_thread, -1);
|
||||
|
||||
network_wait(1);
|
||||
|
||||
thread_reset_event(poll_data.wake_poll_thread);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user