[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] mini-os: implement poll(2)



Frediano Ziglio, le Tue 19 Feb 2013 17:22:23 +0000, a écrit :
> On Tue, 2013-02-19 at 17:39 +0100, Samuel Thibault wrote:
> > Also, checking for files[i].type should be done on entry to the
> > function, not after having waited for some time (and perhaps opened some
> > file descriptor, etc.). I.e.:
> > 
> > Wei Liu, le Tue 19 Feb 2013 15:54:13 +0000, a écrit :
> > > +        /* ignore invalid fds */
> > > +        if (fd < 0 || fd >= NOFILE)
> > > +            continue;
> > 
> > record POLLNVAL as soon as here, and ignore that fd later on.
> > 
> 
> If you detect the handle is invalid you should not wait in select or set
> the timeout to 0. poll should return as soon at it receive an event. In
> this case getting POLLNVAL is an event. I don't know if you have to test
> all handles in this case or just return the number of fds that got set
> to POLLNVAL.

I believe you have to test all handles.

> > > +    /* don't care about the return value, but we do need errno */
> > > +    select(max_fd+1, &rfds, &wfds, &efds, timeo);
> > 
> > Mmm. I don't think we don't care about the return value: if select
> > returns -1 with EINTR, poll has to do the same. That's however probably
> > the only case we have to take care of.
> 
> if you get an error you can't consider valid the sets, from Linux man
> page (select(2)):
> 
> "On error, -1 is returned, and errno is  set  appropriately; the sets
> and timeout become undefined, so do not rely on their contents after an
> error."

Yes, sure, but we know what our select() does :)

Samuel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.