Hi, Anyone can explain the purpose of add_ring in Solaris port.c and its usage during pollset_add/pollset_wait
Current behavior is different from other implementations in such way that adding faulty sockets (e.g. shutdown) to the pollset behaves randomly depending on the state at which currently the pollset is. a.) If the pollset is currently in the pollset_poll state adding fault socket will fail. b.) If the pollset is NOT in the poll call, the socket is added to the add_ring and OK is returned !? Next call to poll calls port_associate for that socket and if one fails, all other in the queue are skipped. Fault cause pollset_add returned OK for all of them! Also the return error is for poll_add not for poll. Any technical reason why we can't call port_associate always during pollset_add instead just if its executing port_getn? I mean I would expect at least otherwise, but it seems port_getn and port_associate can be called concurrently, so cannot get the need for an additional queue. Cheers -- ^TM