mirror of
https://git.savannah.nongnu.org/git/lwip.git
synced 2025-08-11 08:54:38 +08:00

This makes a couple of simple re-arrangements in lwip_selscan() that should improve performance in the following ways: 1) The old code linearly walked all sockets to maxfd regardless of whether they were set in the fd set. The process involved acquiring sys arch protect, looking up the socket, and then checking if the socket was present in any of the fd sets. On systems with lots of sockets and a heavy SYS_ARCH_PROTECT infrastructure (a mutex) this can result in a lot of extra work. Now we skip this process for any fd that is not in the input sets 2) If the socket from tryget_socket() is NULL we no longer continue and compare the input fd sets with a zeroed out set of events 3) We no longer need to zero out our event sets because they are only accessed when tryget_socket() is successful lwip_selscan() is called at most once per select call and sometimes up to three times