diff options
author | 2016-12-07 14:07:54 +0100 | |
---|---|---|
committer | 2016-12-07 14:54:53 +0000 | |
commit | 18bc907afaff8f8e87af98b8b77b1a61782c85ab (patch) | |
tree | 98096fe227a4fb512b612c195e7b25dc5f62f105 | |
parent | de8867535a32f448c94c983633201fe1f9e835b6 (diff) |
epoll_input: don't sleep if we expect event in less than 1 ms
Change-Id: I81652fb04608d805497a600c7dc8041911bbf39a
Signed-off-by: Damjan Marion <damarion@cisco.com>
-rw-r--r-- | vlib/vlib/unix/input.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/vlib/vlib/unix/input.c b/vlib/vlib/unix/input.c index b4f2ba53..07096ed2 100644 --- a/vlib/vlib/unix/input.c +++ b/vlib/vlib/unix/input.c @@ -112,11 +112,21 @@ linux_epoll_input (vlib_main_t * vm, (((i64) t - (i64) clib_cpu_time_now ()) * vm->clib_time.seconds_per_clock) /* subtract off some slop time */ - 50e-6; - timeout_ms = timeout * 1e3; - /* Must be between 1 and 10 ms. */ - timeout_ms = clib_max (1, timeout_ms); - timeout_ms = clib_min (max_timeout_ms, timeout_ms); + if (timeout < 1e3) + { + /* We have event happenning in less than 1 ms so + don't allow epoll to wait */ + timeout_ms = 0; + } + else + { + timeout_ms = timeout * 1e3; + + /* Must be between 1 and 10 ms. */ + timeout_ms = clib_max (1, timeout_ms); + timeout_ms = clib_min (max_timeout_ms, timeout_ms); + } } /* If we still have input nodes polling (e.g. vnet packet generator) |