idx=0;
timeout=-1;
LIST_FOREACH(i, ®, entry) {
nfds=remain;
rv=i->before(i->state, fds+idx, &nfds, &timeout);
if (rv!=0) {
idx=0;
timeout=-1;
LIST_FOREACH(i, ®, entry) {
nfds=remain;
rv=i->before(i->state, fds+idx, &nfds, &timeout);
if (rv!=0) {