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:
parent
fbf5290401
commit
0ee6f0e5e0
@ -786,6 +786,7 @@ static void usrsock_rpmsg_process_poll(struct usrsock_rpmsg_s *priv,
|
|||||||
|
|
||||||
/* Stop poll in until recv get called */
|
/* Stop poll in until recv get called */
|
||||||
|
|
||||||
|
pfds[i].events &= ~POLLIN;
|
||||||
priv->pfds[j].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 */
|
/* Stop poll out until send get called */
|
||||||
|
|
||||||
|
pfds[i].events &= ~POLLOUT;
|
||||||
priv->pfds[j].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 */
|
/* Stop poll at all */
|
||||||
|
|
||||||
|
pfds[i].ptr = NULL;
|
||||||
priv->pfds[j].ptr = NULL;
|
priv->pfds[j].ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -856,18 +859,20 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* Collect all socks which need monitor */
|
|
||||||
|
|
||||||
ret = usrsock_rpmsg_prepare_poll(priv, pfds);
|
|
||||||
|
|
||||||
/* Monitor the state change from them */
|
/* Monitor the state change from them */
|
||||||
|
|
||||||
if (ppoll(pfds, ret, NULL, &sigmask) > 0)
|
if (ppoll(pfds, ret, NULL, &sigmask) >= 0)
|
||||||
{
|
{
|
||||||
/* Process all changed socks */
|
/* Process all changed socks */
|
||||||
|
|
||||||
usrsock_rpmsg_process_poll(priv, pfds, ret);
|
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,
|
rpmsg_unregister_callback(priv,
|
||||||
|
Loading…
Reference in New Issue
Block a user