Harry Moreau burst across the net:
>On Mon, 19 Apr 1999, kevin lyda wrote:
>select() is probably your only option. Using signals is indeed a bad
>idea, because you can't control the exact point at which your read()
>gets interrupted by the timeout.
that's what i'm thinking. but there are performance issues to consider.
>>also, i'm looking for this for efficiency reasons. if i did it
>>with a select and then a read it will involve more data copying
>>under linux, yes?
>I don't think so. select() doesn't actually read data.
exactly, that's why there's more data copying. if data is coming in to
a nic, and the driver is notified that a process is waiting to read data
(with a memory location), then the data can go straight from the card
to the memory location (via dma if supported). otherwise the data gets
copied into buffers in the driver, and then again into userspace.
supposedly nt is capable of this. true? also, does any other unix
system do this?
>select() is available on most modern UNIX systems. However,
>you may find slight differences in implementation, especially in error
>conditions. Read the man pages carefully.
ACE can mask this, but select has a (supposed) penalty under nt.
theoretically there would also be a loss of performance under linux if
linux can xfer straight from nic to userspace.
kevin
Maintained by the ILUG website team. The aim of Linux.ie is to
support and help commercial and private users of Linux in Ireland. You can
display ILUG news in your own webpages, read backend
information to find out how. Networking services kindly provided by HEAnet, server kindly donated by
Dell. Linux is a trademark of Linus Torvalds,
used with permission. No penguins were harmed in the production or maintenance
of this highly praised website. Looking for the
Indian Linux Users' Group? Try here. If you've read all this and aren't a lawyer: you should be!