This is an automated email from the ASF dual-hosted git repository. aguettouche pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx-apps.git
The following commit(s) were added to refs/heads/master by this push: new 0ee6f0e netutils/rpmsg: Prepare poll fds only when error with EINTR 0ee6f0e is described below commit 0ee6f0e5e05326d107304498a112a8005014249a Author: Xiang Xiao <xiaoxi...@xiaomi.com> AuthorDate: Mon Feb 1 18:31:07 2021 +0800 netutils/rpmsg: Prepare poll fds only when error with EINTR to improve the performance Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com> Change-Id: Id88df8618473b56236821b9e0f6399dfef2c958d --- netutils/usrsock_rpmsg/usrsock_rpmsg_server.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c index ceb33f3..2efb837 100644 --- a/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c +++ b/netutils/usrsock_rpmsg/usrsock_rpmsg_server.c @@ -786,6 +786,7 @@ static void usrsock_rpmsg_process_poll(struct usrsock_rpmsg_s *priv, /* Stop poll in until recv get called */ + pfds[i].events &= ~POLLIN; priv->pfds[j].events &= ~POLLIN; } @@ -795,6 +796,7 @@ static void usrsock_rpmsg_process_poll(struct usrsock_rpmsg_s *priv, /* Stop poll out until send get called */ + pfds[i].events &= ~POLLOUT; priv->pfds[j].events &= ~POLLOUT; } @@ -804,6 +806,7 @@ static void usrsock_rpmsg_process_poll(struct usrsock_rpmsg_s *priv, /* Stop poll at all */ + pfds[i].ptr = NULL; priv->pfds[j].ptr = NULL; } @@ -856,18 +859,20 @@ int main(int argc, char *argv[]) while (1) { - /* Collect all socks which need monitor */ - - ret = usrsock_rpmsg_prepare_poll(priv, pfds); - /* Monitor the state change from them */ - if (ppoll(pfds, ret, NULL, &sigmask) > 0) + if (ppoll(pfds, ret, NULL, &sigmask) >= 0) { /* Process all changed socks */ usrsock_rpmsg_process_poll(priv, pfds, ret); } + else if (errno == EINTR) + { + /* Collect all socks which need monitor */ + + ret = usrsock_rpmsg_prepare_poll(priv, pfds); + } } rpmsg_unregister_callback(priv,