[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

Re: select()



> how is it _32_ times more data? int is only a WORD (16 bits)... ok.. if u 
> consider setting the conditions as another 2 bits... that comes to 18.

On all 32 bit processors, int is a 32 bit quantity. And there is no need
for "setting conditions", as you pass *3* separate fd_set s to the select
call. Ofcourse now that makes 3 bits per fd, 1 bit more than "2 bits for
setting conditions", but that is how it is.

> That apart, i dunno if its a bug, but when i have 2 sockets open, and i run
> select() on them, select is able to detect only the state change of the first
> socket, and is failing to detect a read condition on the second one. poll() works

I think the fact that you are using a development kernel may be the
reason. AFAIR, select and poll are implemented as separate functions
within the kernel (do_select and do_poll). However the drivers only have
one entry point for both do_select and do_poll.

My suggestion is try using a stable kernel - but in any case it may be
a good idea to post a bug_report/query to the kernel guys about this
peculiar behavior of 2.4.0-test2-whatever.

Kedar.