diff --git a/net/local/local_netpoll.c b/net/local/local_netpoll.c index 572f9484e5d..dd8a8814ea4 100644 --- a/net/local/local_netpoll.c +++ b/net/local/local_netpoll.c @@ -109,6 +109,18 @@ errout: net_unlock(); return ret; } + +/**************************************************************************** + * Name: local_inout_poll_cb + ****************************************************************************/ + +static void local_inout_poll_cb(FAR struct pollfd *fds) +{ + FAR struct pollfd *originfds = fds->arg; + + poll_notify(&originfds, 1, fds->revents); +} + #endif /**************************************************************************** @@ -201,10 +213,14 @@ int local_pollsetup(FAR struct socket *psock, FAR struct pollfd *fds) shadowfds[0] = *fds; shadowfds[0].fd = 1; /* Does not matter */ + shadowfds[0].cb = local_inout_poll_cb; + shadowfds[0].arg = fds; shadowfds[0].events &= ~POLLOUT; shadowfds[1] = *fds; shadowfds[1].fd = 0; /* Does not matter */ + shadowfds[1].cb = local_inout_poll_cb; + shadowfds[1].arg = fds; shadowfds[1].events &= ~POLLIN; net_unlock();