Svante Signell <svante.sign...@gmail.com> writes:
> How much effort is it to implement lwip_poll?
lwip_select constructs a struct lwip_select_cb on the stack
and adds that to the global linked list select_cb_list.
event_callback searches the list for structures that relate
to a particular socket, and wakes up the corresponding threads
so that the lwip_select calls will return.
One would have to
- change struct lwip_select_cb so that it can carry a
struct pollfd * as an alternative for the three fd_sets;
- copy lwip_select and lwip_selscan to new functions and
make them use struct pollfd;
- change event_callback to check whether the struct
lwip_select_cb was made by lwip_poll, and run a linear
search on the struct pollfd array if so.
All of those are defined in api/sockets.c and struct
lwip_select_cb is of course not referenced elsewhere,
so I don't expect anything else would have to change.
The implementation effort might be 4 hours, not including testing
and publication. The lwip test suite is not included in the
lwip-hurd tree, but one could implement and test lwip_poll in the
lwip tree and then copy it over.