You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ag...@apache.org on 2021/04/13 07:36:13 UTC
[incubator-nuttx-apps] branch master updated: netutils/rpmsg:
Prepare poll fds only when error with EINTR
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 <xi...@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 <xi...@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,