netutils/rpmsg: Prepare poll fds only when error with EINTR

to improve the performance

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Id88df8618473b56236821b9e0f6399dfef2c958d
This commit is contained in:
Xiang Xiao 2021-02-01 18:31:07 +08:00 committed by Abdelatif Guettouche
parent fbf5290401
commit 0ee6f0e5e0

View File

@ -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,