From 1f29e1854a6583a5ba6ad2b177e30fc008fcfc4c Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Sun, 12 Feb 2017 10:50:39 +0100 Subject: [PATCH] lxip: poll_does_not_wait() for non-blocking API --- repos/dde_linux/src/lib/lxip/dummies.cc | 1 - repos/dde_linux/src/lib/lxip/lxcc_emul.cc | 5 +++++ repos/dde_linux/src/lib/lxip/nic_handler.cc | 2 ++ repos/dde_linux/src/lib/lxip/timer_handler.cc | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/repos/dde_linux/src/lib/lxip/dummies.cc b/repos/dde_linux/src/lib/lxip/dummies.cc index 522f708209..f2ac7f5403 100644 --- a/repos/dde_linux/src/lib/lxip/dummies.cc +++ b/repos/dde_linux/src/lib/lxip/dummies.cc @@ -92,7 +92,6 @@ DUMMY_RET(0, nla_put) DUMMY_RET(1, ns_capable) DUMMY_RET(1, num_possible_cpus) DUMMY_RET(0, read_seqretry) -DUMMY_RET(0, poll_does_not_wait) DUMMY_RET(0, secpath_exists) DUMMY_RET(0, security_inet_conn_request) DUMMY_RET(0, security_sk_alloc) diff --git a/repos/dde_linux/src/lib/lxip/lxcc_emul.cc b/repos/dde_linux/src/lib/lxip/lxcc_emul.cc index 49fb9c31b8..e7998e386d 100644 --- a/repos/dde_linux/src/lib/lxip/lxcc_emul.cc +++ b/repos/dde_linux/src/lib/lxip/lxcc_emul.cc @@ -368,6 +368,11 @@ void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table _timeout->wait(); } +bool poll_does_not_wait(const poll_table *p) +{ + return p == nullptr; +} + /****************** ** linux/time.h ** diff --git a/repos/dde_linux/src/lib/lxip/nic_handler.cc b/repos/dde_linux/src/lib/lxip/nic_handler.cc index d2548a351b..0b5a3eb895 100644 --- a/repos/dde_linux/src/lib/lxip/nic_handler.cc +++ b/repos/dde_linux/src/lib/lxip/nic_handler.cc @@ -56,6 +56,7 @@ class Nic_client */ void _packet_avail() { + /* process a batch of only MAX_PACKETS in one run */ enum { MAX_PACKETS = 20 }; int count = 0; @@ -69,6 +70,7 @@ class Nic_client _nic.rx()->acknowledge_packet(p); } + /* schedule next batch if there are still packets available */ if (_nic.rx()->packet_avail()) Genode::Signal_transmitter(_sink_submit).submit(); diff --git a/repos/dde_linux/src/lib/lxip/timer_handler.cc b/repos/dde_linux/src/lib/lxip/timer_handler.cc index 45514c459c..711759aba1 100644 --- a/repos/dde_linux/src/lib/lxip/timer_handler.cc +++ b/repos/dde_linux/src/lib/lxip/timer_handler.cc @@ -176,7 +176,7 @@ class Lx::Timer update_jiffies(); while (Lx::Timer::Context *ctx = _list.first()) { - if (ctx->timeout > jiffies) + if (ctx->timeout > jiffies) break; ctx->function();