diff options
| author | David S. Miller <davem@davemloft.net> | 2016-11-15 10:54:36 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-11-15 10:54:36 -0500 |
| commit | bb598c1b8c9bf56981927dcb8c0dc34b8ff95342 (patch) | |
| tree | 69fe6d3bcdbf0acb76e42b144d8af5a0234ccdcb /tools/virtio/ringtest/main.c | |
| parent | eb2ca35f1814dad3ca547261eedfbbd0d65a0efc (diff) | |
| parent | e76d21c40bd6c67fd4e2c1540d77e113df962b4d (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Several cases of bug fixes in 'net' overlapping other changes in
'net-next-.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/virtio/ringtest/main.c')
| -rw-r--r-- | tools/virtio/ringtest/main.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/tools/virtio/ringtest/main.c b/tools/virtio/ringtest/main.c index 147abb452a6c..f31353fac541 100644 --- a/tools/virtio/ringtest/main.c +++ b/tools/virtio/ringtest/main.c @@ -96,7 +96,13 @@ void set_affinity(const char *arg) assert(!ret); } -static void run_guest(void) +void poll_used(void) +{ + while (used_empty()) + busy_wait(); +} + +static void __attribute__((__flatten__)) run_guest(void) { int completed_before; int completed = 0; @@ -141,7 +147,7 @@ static void run_guest(void) assert(completed <= bufs); assert(started <= bufs); if (do_sleep) { - if (enable_call()) + if (used_empty() && enable_call()) wait_for_call(); } else { poll_used(); @@ -149,7 +155,13 @@ static void run_guest(void) } } -static void run_host(void) +void poll_avail(void) +{ + while (avail_empty()) + busy_wait(); +} + +static void __attribute__((__flatten__)) run_host(void) { int completed_before; int completed = 0; @@ -160,7 +172,7 @@ static void run_host(void) for (;;) { if (do_sleep) { - if (enable_kick()) + if (avail_empty() && enable_kick()) wait_for_kick(); } else { poll_avail(); |
